雞尾酒算法,也被稱為雙向冒泡排序,是對(duì)冒泡排序的一種改進(jìn),它可以有效地解決冒泡排序在最后一個(gè)元素已經(jīng)排好序的情況下仍需要進(jìn)行比較和交換的問題。
def cocktail_sort(arr): n = len(arr) left = 0 right = n - 1 while (left< right): for i in range(left, right): if (arr[i] >arr[i + 1]): arr[i], arr[i + 1] = arr[i + 1], arr[i] right -= 1 for i in range(right, left, -1): if (arr[i - 1] >arr[i]): arr[i - 1], arr[i] = arr[i], arr[i - 1] left += 1 arr = [64, 34, 25, 12, 22, 11, 90] cocktail_sort(arr) print ("排序后的數(shù)組:") for i in range(len(arr)): print ("%d" %arr[i]),
雞尾酒算法的思路是從左到右和從右到左輪流進(jìn)行元素比較和交換,從而實(shí)現(xiàn)更高效的排序。在實(shí)現(xiàn)過程中,我們需要定義左右邊界,并進(jìn)行輪流掃描和比較。
雞尾酒算法的時(shí)間復(fù)雜度為O(n^2),與冒泡排序相同,但其效率比冒泡排序高,因?yàn)樗梢员苊庠谧詈笠粋€(gè)元素已排好序的情況下進(jìn)行不必要的比較和交換操作。