冒泡排序

xiaoxiao2021-02-28  162

1、算法思想:临近的数字两两进行比较,按照从小到大或从大到小的顺序排列,这样排列一次后最大的或最小的数字被拍到最后。然后继续排序直到倒数第二位时结束。 2、代码示例: (1)直接冒泡 public void  sort ( int [] list ,int  size){ for (int i = 0;i<size-1;i++){ for (int j = 0 ;j<size-1;j++){ int temp ; //boolean flag = false ;//优化的冒泡算法 if (list[j]>list[j+1]){ temp = list[j]; list[j] = list[j+1]; list[j+1] = temp ; //flag = true ; } } //if (flag = true) // break; } } (2)正宗冒泡 public void sort(int[] list,int size){ for (int i = 1;i<size-1;i++){ for (int j = size-1 ;j>=i;j--){ int temp ; //boolean flag = false ;//优化的冒泡算法 if (list[j-1]>list[j]){ temp = list[j]; list[j] = list[j-1]; list[j-1] = temp ; //flag = true ; } } //if (flag = true) // break; } } (3)设置标志来优化冒泡算法(最优冒泡)     如(2)注释部分 3、复杂度分析:时间复杂度:外层循环执行N-1次,内层循环最多执行N次,最少执行1次,平均执行(N+1)/2,循环比较(N+1)*(N-1)/2=(N^2-1)/2次。复杂度为O(N^2)。
转载请注明原文地址: https://www.6miu.com/read-25293.html

最新回复(0)