数据结构和算法分析

冒泡排序

2018-08-08  本文已影响3人  Swen_9826

原理:比较两个相邻的元素,将值大的元素交换至右端(升序)。

步骤:

例子:int[] arr={5,2,6,0,9};经行冒泡排序

过程:

第一趟排序:从5开始


第二趟排序:从2开始


第三趟排序:从2开始


第四趟排序:从2开始


最终的答案为:0 2 5 6 9


结论:N个数字经行排序,总共进行N-1趟排序,每趟的排序次数为(N-i)次。

时间复杂度:

1.如果数据是正序排列的,那么第一趟就可以把所有数据排好,则比较次数C和记录移动次数M均达到最小值。

Cmin = n-1
Mmin = 0

最好的时间复杂度为O(n)。

2.如果数据是倒序排列的,那么要n-1趟才可以把所有数据排好,则比较次数C和记录移动次数M均达到最大值。

最坏时间复杂度为:O(n2)。

综上,平均时间复杂度为:O(n2)

优缺点:

代码:

public class BubbleSort{
    public static void main(String[] args){        

        int[] arr={5,2,6,0,9};

        System.out.println("排序前的数据:");
        for(int num : arr){
            System.out.print(num+" ");
        }
        //通过两个循环来控制
        for(int i=0;i<arr.length-1;i++){
            for(int j=0;j<arr.length-1-i;j++){
                if(arr[j] > arr[j+1]){
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }        
        System.out.println();
        System.out.println("排序后的数据:");
        for(int num : arr){
            System.out.print(num+" ");
        }

    }            
}

结果:

上一篇 下一篇

猜你喜欢

热点阅读