天天看點

經典算法題每日演練——第二十三題 雞尾酒排序

這篇我們繼續扯淡一下雞尾酒排序,為了知道為啥取名為雞尾酒,特意看了下百科,見框框的話,也隻能勉強這麼說了。

經典算法題每日演練——第二十三題 雞尾酒排序

要是文藝點的話,可以說是攪拌排序,通俗易懂點的話,就叫“雙向冒泡排序”,我想作為碼農的話,不可能不知道冒泡排序,

冒泡是一個單向的從小到大或者從大到小的交換排序,而雞尾酒排序是雙向的,從一端進行從小到大排序,從另一端進行從大

到小排序。

經典算法題每日演練——第二十三題 雞尾酒排序

從圖中可以看到,第一次正向比較,我們找到了最大值9. 

                      第一次反向比較,我們找到了最小值1.

                      第二次正向比較,我們找到了次大值8.

                      第二次反向比較,我們找到了次小值2

                      。。。

                     最後就大功告成了。

下面我們看看代碼:

經典算法題每日演練——第二十三題 雞尾酒排序

從結果上面看,我們會發現,當數組有序的時候,我們還會繼續往下排,知道完成length/2次,這個就跟沒優化之前的冒泡排序一樣,

此時我們可以加上一個标志位issorted來判斷是否已經沒有交換了,如果沒有,提前退出循環。。。

繼續閱讀