• 数据结构排序系列详解之三 冒泡排序


    前面两篇博客讲述的排序算法都是基于插入类的排序,这篇文章开始介绍交换类的排序算法,即:冒泡排序、快速排序(冒泡排序的改进)。

    交换类的算法:通过交换逆序元素进行排序的方法。

    冒泡排序:反复扫描待排序记录序列,在扫描的过程中,顺次比较相邻的两个元素的大小,若逆序就交换位置。

    算法实现代码如下:

    package exp_sort;
    
    public class BubbleSort {
    
    	public static void bubble(int array[]) {
    
    		boolean change = true;
    		for (int i = 0; i < array.length && change; i++) {
    			change = false;
    			for (int j = 0; j < array.length - i - 1; j++) {
    				if (array[j] > array[j + 1]) {
    					int temp = array[j];
    					array[j] = array[j + 1];
    					array[j + 1] = temp;
    					change = true;
    				}
    			}
    		}
    
    		for (int i = 0; i < array.length; i++) {
    			System.out.print(array[i] + " ");
    		}
    		System.out.println("
    ");
    
    	}
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		int array[] = { 38, 62, 35, 77, 55, 14, 35, 98 };
    		bubble(array);
    	}
    
    }
    


    算法分析:最好的情况是,需要排序的初始状态是正序排列的,则一趟扫描即可完成,此时时间复杂度是O(n);最坏情况是,需要排序的初始状态是反序的,则需要n-1趟扫描,此时时间复杂度是 O(n^2),空间复杂度是 O(1);该算法是一种 稳定的排序方法。

  • 相关阅读:
    类型-String:二进制安全
    影视-纪录片:《魅力柬埔寨》
    植物:探矿植物
    植物-探矿植物:铜草
    扩展名:cs
    扩展名:snk
    Code-Helper:OracleHelper.cs
    Code-Helper:SqlHelper.cs
    Linux: FTP服务原理及vsfptd的安装、配置
    Linux下/etc/fstab文件详解
  • 原文地址:https://www.cnblogs.com/aukle/p/3221532.html
Copyright © 2020-2023  润新知