十大排序算法——冒泡排序

2018-07-18  本文已影响0人  瓦西大人

主要思想:

外层循环从1到n-1,内循环从当前外层的元素的下一个位置开始,依次和外层的元素比较,出现逆序就交换。

Java实现代码:

public class Bubble {
    public static void main(String[] args) {
        int[ ] array = new int[]{2, 3, 5, 8, 9, 0, 4, 5, 1, 6, 8, 7};
        sort(array);
        System.out.println(Arrays.toString(array));

    }
    private static void sort(int[] array) {
        int n = array.length;
        for (int i = 0; i < n-1; i++) {
            for (int j = i + 1; j < n; j++) {
                if (array[j] < array[i]) {
                    int temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
        }
    }
}

C实现代码:

//从小到大排n个个数
void Bubble() 
{ 
      for(int i=1;i<n;i++) 
      { 
        for(int j=0;i<n-i;j++) 
         { 
              if(a[j]>a[j+1])//比较交换相邻元素 
               { 
                   int temp; 
                   temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; 
               } 
         } 
      } 
} 

最优复杂度:

当输入数组就是排好序的时候,复杂度为O(n),而快速排序在这种情况下会产生
O(n²)的复杂度。

最差复杂度:

当输入数组为倒序时,复杂度为O(n²) ,适用于排序小列表。

上一篇下一篇

猜你喜欢

热点阅读