鸡尾酒的定义和分类有哪些详细说明?

摘要:在上一篇漫画中,小灰介绍了冒泡排序的思路和几种变化: 漫画:什么是冒泡排序? 那么,鸡尾酒排序又是何方神圣呢?我们这一期将会详细讲述。 让我们首先来回顾一下冒泡排序的思想: 冒泡排序的每一个元素都可以像小气泡一样,根据自身大小,一点一点向着
在上一篇漫画中,小灰介绍了冒泡排序的思路和几种变化: 漫画:什么是冒泡排序? 那么,鸡尾酒排序又是何方神圣呢?我们这一期将会详细讲述。 让我们首先来回顾一下冒泡排序的思想: 冒泡排序的每一个元素都可以像小气泡一样,根据自身大小,一点一点向着数组的一侧移动。算法的每一轮从都是从左到右比较元素,进行单向的位置交换。 那么鸡尾酒排序做了怎样的优化呢? 鸡尾酒排序的元素比较和交换过程是双向的。 让我们来举一个栗子: 有8个数组成一个无序数列:2,3,4,5,6,7,8,1,希望从小到大排序。 如果按照冒泡排序的思想,排序的过程是什么样呢? 第一轮结果(8和1交换) 第二轮结果(7和1交换) 第三轮结果(6和1交换) 第四轮结果(5和1交换) 第五轮结果(4和1交换) 第六轮结果(3和1交换) 第七轮结果(2和1交换) 鸡尾酒排序是什么样子呢?让我们来看一看详细过程: 第一轮(和冒泡排序一样,8和1交换) 第二轮 此时开始不一样了,我们反过来从右往左比较和交换: 8已经处于有序区,我们忽略掉8,让1和7比较。元素1小于7,所以1和7交换位置: 接下来1和6比较,元素1小于6,所以1和6交换位置: 接下来1和5比较,元素1小于5,所以1和5交换位置: 接下来1和4交换,1和3交换,1和2交换,最终成为了下面的结果: 第三轮(虽然已经有序,但是流程并没有结束) 鸡尾酒排序的第三轮,需要重新从左向右比较和交换: 1和2比较,位置不变;2和3比较,位置不变;3和4比较,位置不变......6和7比较,位置不变。 没有元素位置交换,证明已经有序,排序结束。 这就是鸡尾酒排序的思路。
阅读全文