摘至本人有道雲筆記《快速排序(速記)》
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...