排序算法------冒泡排序

    冒泡排序又称为气泡排序,它是一种比较简单的算法它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止!

    代码实现

public static void bubbleSort(int []arr) {
    for(int i =0;i<arr.length-1;i++) {
        for(int j=0;j<arr.length-i-1;j++) {
            if(arr[j]>arr[j+1]) {
                int temp = arr[j];
                 
                arr[j]=arr[j+1];
                 
                arr[j+1]=temp;
             }
        }    
    }
}

    下面我们对冒泡排序进行优化,使它效率更高一些:添加一个标记,如果一趟遍历中发生了交换,则标记为true,否则为false。如果某一趟没有发生交换,说明排序已经完成!

    

public static void bubbleSort(int []arr) {
    int flag;
    for(int i =0;i<arr.length-1;i++) {
        flag=0;
        for(int j=0;j<arr.length-i-1;j++) {
            if(arr[j]>arr[j+1]) {
                int temp = arr[j];
                 
                arr[j]=arr[j+1];
                 
                arr[j+1]=temp;
                flag=1;
             }
        }
        if (flag==0)
           break;    
    }
}

    冒泡排序的时间复杂度为O(N2),是稳定的算法。

猜你喜欢

转载自my.oschina.net/u/3475585/blog/1810401