快速排序(速記)

2021-08-28 14:12:23 字數 1458 閱讀 6475

摘至本人有道雲筆記《快速排序(速記)》

1,取乙個元素作為基準值

2,把大於基準值的放右邊,小於基準值的放左邊

3,在左邊執行 1,2, ---遞迴直到列表長度小於2 ,同理 右邊同樣

4,將子串行排序後 同基準值合併----得到有序序列

:此例始終將第乙個值作為基準值,實際上這樣做是沒有意義的,因為這樣左邊的列表始終為空,導致呼叫棧非常長

如果將始終將中間值作為基準值,那麼呼叫棧長度會很短

def quick_sort(alist, start, end):

"""快速排序"""

# 遞迴的退出條件

if start >= end:

return

# 設定起始元素為要尋找位置的基準元素

mid = alist[start]

# low為序列左邊的由左向右移動的游標

low = start

# high為序列右邊的由右向左移動的游標

high = end

while low < high:

# 如果low與high未重合,high指向的元素不比基準元素小,則high向左移動

while low < high and alist[high] >= mid:

high -= 1

# 將high指向的元素放到low的位置上

alist[low] = alist[high]

# 如果low與high未重合,low指向的元素比基準元素小,則low向右移動

while low < high and alist[low] < mid:

low += 1

# 將low指向的元素放到high的位置上

alist[high] = alist[low]

# 退出迴圈後,low與high重合,此時所指位置為基準元素的正確位置

# 將基準元素放到該位置

alist[low] = mid

# 對基準元素左邊的子串行進行快速排序

quick_sort(alist, start, low-1)

# 對基準元素右邊的子串行進行快速排序

quick_sort(alist, low+1, end)

alist = [54,26,93,17,77,31,44,55,20]

quick_sort(alist,0,len(alist)-1)

print(alist)

常用的排序演算法 快速記憶

一 氣泡排序 迴圈n 1趟,每趟選乙個相對最大的 最簡單的排序,氣泡排序,氣泡排序是迴圈n 1趟 從i 0開始,每趟從左到右,從j 0開始,比較n 1 i次,依次比較相鄰索引對應的兩數,左比右大則交換值,否則不變。這樣趟i都能拿到乙個最大值,即i 1個最大值,最後乙個最小值不用比。排序結束。優化點 ...

怎麼快速 記單詞

記憶方法 8首先將需要背的俄語單詞分成若干組 為方便敘述,這裡設為a,b,c,d,組 平均每組4 6個俄語單詞。當然,這也要依單詞難易而定。若單詞較長,或詞義較多,則每組單詞少一點 反之,則多一些。然後按照下列步驟進行 1 學習a組,學完後,複習a組一次。關於如何記,見後面的注意事項 2 學習b組,...

restful規範快速記憶

十個規則 1 因為是面向資源程式設計,所以每個url代表一種資源,url中盡量不要用動詞,要用名詞 2 盡量使用https,https代替http 3 在url中體現是否是api 4.在url中體現版本 5 在url中的過濾條件 page 3 6 根據method不同,進行不同的操作 get pos...