天天看點

雞尾酒排序 | 算法必看系列十三

原文連結

雞尾酒排序其實就是冒泡排序的變形,它的時間複雜度和冒泡排序一樣,都是O(n^2),比快速排序要慢不少。

雞尾酒排序 | 算法必看系列十三

雞尾酒排序的思想有點像擺鐘一樣,從左到右,又從右到左。而冒泡排序隻是單向執行。

雞尾酒排序也是交換排序,假設做一個升序排序,先從左到右,交換一趟把最大的數放置右邊,然後從右到左,把最小的數放置左邊。

視訊動畫

Code

雞尾酒排序 | 算法必看系列十三

Result

雞尾酒排序 | 算法必看系列十三

優化 減少不必要的交換

看了前面冒泡排序和快速排序,我相信優化是一項學習的重點,以後面試中可以把這項說說來,展示出你的實力。

這次我們就優化不必要的交換次數,come on!

我麼通過移除swap函數的調用,進而讓程式運作的更快一點。每次進行符合條件判斷時,不做交換,讓最大或者最小的資料做一個标記,待全部比較完之後,才進行做交換。

雞尾酒排序 | 算法必看系列十三
雞尾酒排序 | 算法必看系列十三

-----End-----

來源 | 算法無遺策

作者 | 我脫下短袖

繼續閱讀