python寫快排 寫了死迴圈, 記下來警醒一下

2021-09-03 10:00:32 字數 918 閱讀 3576

寫 尋找最小k 個數 時,直接用快排寫。但是快排一開始寫錯了。。。

class solution:

def getleastnumbers_solution(self, tinput, k):

if tinput == or k > len(tinput) or k<0:

return

#tinput.sort()

self.quicksort(tinput,0,len(tinput)-1)

return tinput[0:k]

def quicksort(self,alist,start,end):

if start = pivotvalue:

while left <= right and alist[right]>= pivotvalue:

right -=1

if left>right:

done = true

else:

alist[left],alist[right] = alist[right],alist[left]

alist[start],alist[right] = alist[right],alist[start]

return right

myt = solution()

print(myt.getleastnumbers_solution([12,43,3,5,2],2))

出錯點是兩個= 沒加,會造成什麼影響呢?

首先要明確的是,最後要讓左指標直到排好之後的第乙個大於分位數的數,右指標指向最後乙個小於分位數的數;也就是判斷語句   left > right:  

那麼,前面操作 兩個指標的時候, 就要在相同的時候還能移動呀,不然,相同了,左右指標都不動了,然後left>right 又永遠無法滿足。。。就是死迴圈了。

python寫快排 python 實現快速排序

python排序演算法之快速排序 快速排序 quicksort 快排的思想 首先任意選取乙個資料 通常選用陣列的第乙個數 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。一趟快速排序的演算法是 1 設定兩個變數i j,排序開始的時候 i 0,j ...

python實現快排演算法 python快排演算法詳解

快排是python經典演算法之一。1 下面講解的是什麼是快排和快排的圖示。2 快排是一種解決排序問題的運算方法。3 快排的原理 在陣列中任意選擇乙個數字作為基準,用陣列的資料和基準資料進行比較,比基準數字打的數字的基準數字的右邊,比基準數字小的數字在基準數字的左邊,第一次排序之後分為比基準資料大或比...

小白仿寫快排

快速排序是對氣泡排序的一種改進,使用的是分治法,主要思想為在待排序陣列中找到乙個關鍵資料 本例中為陣列第乙個數 設定兩個引數 i和 j 讓i從頭遍歷 j從尾遍歷,分別找比關鍵資料大的數和比關鍵資料小的數,找到之後讓i和j所指向的數交換,當i和j相等時,讓i和j指向的數和關鍵資料交換,使得關鍵資料左邊...