动画:什么是鸡尾酒排序和地精排序?

奇葩排序第二弹:)

从冒泡排序开始

先来看回顾一下冒泡排序的思想和原理。

冒泡排序的思想

冒泡排序的每一个元素都可以像小气泡一样,根据自身大小,一点一点向着数组的一侧移动。

冒泡排序算法的原理

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

一般情况下,可以通过下面的动画理解冒泡排序。

冒泡排序

冒泡排序

现在我们来看一组特殊数据如果使用冒泡排序会怎么样。

将无序数列:2,3,4,5,6,7,8,1,使用冒泡排序使其从小到大排序。

无序数列

无序数列

进行逐步分析:

第一轮操作( 8 和 1 交换 )

第一轮操作( 8 和 1 交换 )

第一轮操作( 8 和 1 交换 )

第二轮操作( 7 和 1 交换 )

第二轮操作( 7 和 1 交换 )

第二轮操作( 7 和 1 交换 )

第三轮操作( 6 和 1 交换 )

第三轮操作( 6 和 1 交换 )

第三轮操作( 6 和 1 交换 )

第四轮操作( 5 和 1 交换 )

第四轮操作( 5 和 1 交换 )

第四轮操作( 5 和 1 交换 )

第五轮操作( 4 和 1 交换 )

第五轮操作( 4 和 1 交换 )

第五轮操作( 4 和 1 交换 )

第六轮操作( 3 和 1 交换 )

第六轮操作( 3 和 1 交换 )

第六轮操作( 3 和 1 交换 )

第七轮操作( 2 和 1 交换 )

第七轮操作( 2 和 1 交换 )

第七轮操作( 2 和 1 交换 )

仔细观察上面的这组无序数列,实际上只有 1 的位置不在该在的位置,而 2 ,3 ,4 ,5 ,6 ,7 ,8 都已经有序了,结果使用冒泡排序,需要 折腾 7 次 才能将 1 归位。

鸡尾酒排序

鸡尾酒排序

鸡尾酒排序

鸡尾酒排序,也就是定向冒泡排序,鸡尾酒搅拌排序,搅拌排序(也可以视作选择排序的一种变形),涟漪排序,来回排序或快乐小时排序,是冒泡排序的一种变形。

算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。

排序过程:

先对数组从左到右进行冒泡排序(升序),则最大的元素去到最右端

再对数组从右到左进行冒泡排序(降序),则最小的元素去到最左端

以此类推,依次改变冒泡的方向,并不断缩小未排序元素的范围,直到最后一个元素结束

Show Me The Animation

第一轮操作( 8 和 1 交换 )

第一轮操作( 8 和 1 交换 )

第一轮操作( 8 和 1 交换 )

第二轮操作 ( 从序列右边开始遍历 )

第二轮操作 ( 从序列右边开始遍历 )

第二轮操作 ( 从序列右边开始遍历 )

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsszdp.html