寫 尋找最小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指向的數和關鍵資料交換,使得關鍵資料左邊...