def
quicksort
(head, tail)
: head1 = head
tail1 = tail
tmp = arr[head]
# 儲存臨時元素
# 如果頭指標小於尾指標一直迴圈,直到相等找到元素的正確索引跳出迴圈
while head < tail:
# 尾部資料大於臨時元素,尾指標前移
while arr[tail]
> tmp and head < tail:
tail -=
1# 尾部資料小於等於臨時元素,賦值給頭指標,頭指標後移
arr[head]
= arr[tail]
if head < tail:
head +=
1# 頭部資料大於臨時元素,頭指標後移
while arr[head]
< tmp and head < tail:
head +=
1# 頭部資料大於等於臨時元素,賦值給尾指標,尾指標前移
arr[tail]
= arr[head]
if head < tail:
tail -=
1 index = head # head和tail相等 是正確位置
arr[index]
= tmp # 把臨時元素賦值給正確位置
print
(arr)
if index -
1> head1:
# 遞迴前半部分
quicksort(head1, index -1)
if index +
1< tail1:
# 遞迴後半部分
quicksort(index +
1, tail1)
if __name__ ==
'__main__'
: arr =[4
,1,3
] quicksort(0,
len(arr)-1
)
高樓扔雞蛋問題一種比較簡單的解法(C )
這個是leetcode刷題筆記,下面這種解法提交的時候會超時,但是單獨試了幾個用例是正確的。題目 你將獲得 k 個雞蛋,並可以使用一棟從 1 到 n 共有 n 層樓的建築。每個蛋的功能都是一樣的,如果乙個蛋碎了,你就不能再把它掉下去。你知道存在樓層 f 滿足 0 f n 任何從高於 f 的樓層落下的...
快速排序的一種較簡單寫法
文中的快速排序實際上是快速找到首位元素的實際位置並放置,接著通過二分法,進行遞迴查詢放置,完成排序。void quicksort int a,int low,int high int i low,j high if i temp i首先我們拿到一組資料a,找到a的最低位下標和最高位下標。接著使用哨兵...
一種快速排序演算法
using system class program for int l 0 l src.length l src count temp l i 3 0xff temp l static void main string args watch.stop console.writeline quick...