比較簡單的一種快速排序方法

2021-10-06 13:15:55 字數 1055 閱讀 6188

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...