找出陣列中第K個最小的數(快速排序)

2021-07-11 01:15:51 字數 503 閱讀 3664

問題描述:給定乙個無序的陣列,從乙個陣列中找出第k個最小的數,例如,對於給定陣列序列,其中第4小的數為5。

演算法思路:採用快速排序,分而治之的思想,根據主元,每次partiton以主元為軸,比它小的數在左邊,比它大的數在右邊,判斷tmp的位置,如果它的位置為k-1,那麼它就是第k小的數,如果它的位置小於k-1,那麼第k小一定在陣列的右半部分,採用遞迴方法在陣列右半部分繼續查詢;否則第k小在陣列左半部分,採用遞迴方法在左半部分陣列中繼續查詢。

public

class

main

public

static

intgetkmin(int array,int k)

public

static

void

main(string args) ;

int kmin=getkmin(a,6);

system.out.println(kmin);

}}

找出陣列中前K個最小的數 Python實現

尋找陣列中給定的第k大的數,或者前k個最大的數,與之同理,稍加改動即可 如下 最大堆下沉調整,始終保持最大堆 def downadjust ary list,parent index,length tmp ary list parent index child index 2 parent inde...

找出陣列中第K大或者是第K小的數(利用快速排序)

快速排序一趟之後,主元pivot到了他最終應該在的位置,如果是從小到大排序,那麼一趟排序之後,他左邊的數都是比它小的,他右邊的數都是比它大的數,所以,如果我們要找出第k小的數,我們可以在一趟排序後,檢查主元的位置和k是否對應 if pos 1 k 因為下標是從0開始的,所以要加1。如果相等的話,就正...

陣列 找出陣列的第k大的數

找出陣列的第k大的數 6,7,8,9,3,2,4,8 第3大的數是4 class solution def call self,nums,k if nums none or len nums 0 return 1 result self.qsort nums,0,len nums 1,k retur...