冒泡排序快速学习(例子+图文分析)

Posted 六行代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序快速学习(例子+图文分析)相关的知识,希望对你有一定的参考价值。

冒泡排序

1、举个例子





现有数组 X{7,6,3,5,4,1,2,9,8},
要将数组X里面的数按照从小到大进行排序





2、java实现





//进行冒泡排序

for(int i=0;i<X.length;i++) {

    for(int j=0;j<(X.length-1-i);j++) {

        if(X[j]>X[j+1]) {

        //交换两个相邻位置的数值

            int num=X[j];

            X[j]=X[j+1];

            X[j+1]=num;

        }

    }

}

//时间复杂度为O(n^2)





3、效果展示





未排序:7 6 3 5 4 1 2 9 8 

当 i= 0时:6 3 5 4 1 2 7 8 9

当 i= 1时:3 5 4 1 2 6 7 8 9

当 i= 2时:3 4 1 2 5 6 7 8 9

当 i= 3时:3 1 2 4 5 6 7 8 9

当 i= 4时:1 2 3 4 5 6 7 8 9

当 i= 5时:1 2 3 4 5 6 7 8 9

当 i= 6时:1 2 3 4 5 6 7 8 9

当 i= 7时:1 2 3 4 5 6 7 8 9

当 i= 8时:1 2 3 4 5 6 7 8 9

排序后:1 2 3 4 5 6 7 8 9 





4、图文分析

4-1



当i=0,j=0时

比较第0(j)个位置和第1(j+1)个位置上面的数

可以看出第0个比第1个大,所以交换位置



4-2:



当i=0,j=1时

冒泡排序快速学习(例子+图文分析)

比较第1(j)个位置和第2(j+1)个位置上面的数,

可以看出第1个比第2个大,所以交换位置



4-3:



后面以此类推,当i=0,j=X.lenth-1时

效果如下:

冒泡排序快速学习(例子+图文分析)

此时可以发现,已经把最大的数移到数组末尾了



4-4:



当i=1,2,4…时,也是如此

可以看出一个细节:

每次j发生一次迭代完成,都会把当前 最大值移至数组的末尾
每次j发生循环时,只需要让 j 等于(X.length-1-i)的位置就可以结束当前循环



我知道你在看呦


以上是关于冒泡排序快速学习(例子+图文分析)的主要内容,如果未能解决你的问题,请参考以下文章

数据结构学习笔记——交换排序(冒泡排序和快速排序)

数据结构学习笔记——交换排序(冒泡排序和快速排序)

快速学习冒泡排序

数据结构c语言版八大算法(上)图文详解带你快速掌握——希尔排序,堆排序,插入排序,选择排序,冒泡排序!

图解排序 1/10 - 冒泡排序

基础排序算法总结(代码+图片分析)