雞尾酒排序 Python

2021-10-06 05:08:24 字數 1508 閱讀 5993

一、雞尾酒排序簡介

二、演算法步驟

三、**實現

一、雞尾酒排序簡介 氣泡排序是每個元素根據自身的大小,一點一點的向陣列的一端進行移動,它是乙個單向的運動,每一輪都是從左到右來比較元素。

雞尾酒排序,也是屬於氣泡排序的一種改進方法,它是每一輪進行兩個方向的比較和移動,剛開始從左到右比較,確定出乙個最大數,然後從右向左比較,確定出乙個最小數。其實就相當於氣泡排序在一輪中從左到右排序後,再從右往左排序一次。這樣可以減少排序回合數,但是**量和氣泡排序相比要增加一倍。

雞尾酒排序在大部分元素已經有序的情況下,才可以發揮出它的優勢。

二、演算法步驟 1、確定總的排序輪數為len(arr)//2

2、設定乙個布林變數,每趟排序開始時都設定為true

3、 奇數輪,從左向右比較和交換;偶數輪開始之前,要重新標記為true;偶數輪,從右向左比較和交換

4、如果沒有進行過交換,說明元素已經有序,跳出迴圈

三、**實現

# 雞尾酒排序,也是屬於氣泡排序的一種改進方法

defcock_tail_sort

(arr=

):for i in

range

(len

(arr)//2

):# 有序標記,初始為true

flag=

true

# 奇數輪,從左向右比較和交換

for j in

range

(i,len

(arr)-1

-i):

if arr[j]

>arr[j+1]

: arr[j+1]

,arr[j]

=arr[j]

,arr[j+1]

flag=

false

if flag:

break

# 偶數輪開始之前,要重新標記為true

flag=

true

# 偶數輪,從右向左比較和交換

雞尾酒排序

氣泡排序是從陣列的一側到另一側為一輪,根據條件兩兩交換,例如關於氣泡排序中的一組資料3 2 5 4 6 1 8 9 7,優化的氣泡排序在經過六輪之後得到排好的陣列,而雞尾酒排序是一輪次比較兩回 先從左到右比較,如果左邊比右面大,交換位置 然後從右到左比較,左邊比右邊大,交換位置。就用冒泡中的那組數從...

雞尾酒排序

雞尾酒排序是一種定向的氣泡排序,也可以稱為攪拌排序 漣漪排序。是氣泡排序的一種變形。和氣泡排序的區別在於,雞尾酒排序採用了雙向比較並替換的原理。基本原理 第一步 宣告兩個臨時指標left和right,分別指向第乙個元素和最後乙個元素。第二步 每一輪比較時,從right往left方向查詢最大數,放到r...

雞尾酒排序

1.什麼是雞尾酒排序 雞尾酒排序,也稱定向氣泡排序 雙氣泡排序 攪拌排序 漣漪排序 來回排序 快樂小時排序,是氣泡排序的一種變形。2.與氣泡排序的區別 雞尾酒是雙向排序,可以得到較好的排序效能 3.排序過程 舉例 int arr new 第一趟排序 從左到右找到最大值放在最右端 第一次排序 2和4比...