尋找第k大的數

2021-10-03 11:24:38 字數 1122 閱讀 8126

給定乙個整數陣列arr,同時給定它的大小n和要找的k(k在1到n之間),返回第k大的數。

解法一:結合快排思想,將陣列從大到小排序的過程中返回確定好的元素的下標,與k比較,將範圍逐漸縮小。

public

class

test

;int n =

findkth

(arr,5,

2);

system.out.

println

(n);

}public

static

intfindkth

(int

a,int n,

int k)

else

if(index < k)

else}}

public

static

int partition (

int[

] arr,

int left,

int right)

}// 迴圈結束後l前邊的數字比key大,l後邊的數字比key小

swap

(arr, left, l)

;// 最終將key的值放到l位置上

return l;

// 返回key的下標l

// 結束之後key值左邊比key大,key值右邊比key小

}private

static

void

swap

(int

arr,

int a,

int b)

}

以上也可以將partition 函式換成快速排序的partition函式

public

static

int partition (

int[

] arr,

int left,

int right)

if(l < r)

while

(l < r && arr[l]

>= key)

if(l < r)

}return l;

}

尋找第K大的數

題目描述 要求在n個不重複的整數中,找出第k大的整數 其中0輸入第一行為兩個正整數n k 第二行為n個整數,輸入保證這n個整數兩兩相異,每個整數的範圍在 1000000到1000000之間 輸出輸出第k大的整數值 樣例輸入 5 33 2 4 5 1 樣例輸出 3 如下 include include...

尋找第K大的數

在一堆資料中查詢到第k個大的值。名稱是 設計一組n個數,確定其中第k個最大值,這是乙個選擇問題,解決這個問題的方法很多。所謂 第 前 k大數問題 指的是在長度為n n k 的亂序陣列中s找出從大到小順序的第 前 k個數的問題。解法1 我們可以對這個亂序陣列按照從大到小先行排序,然後取出前k大,總的時...

尋找第K大的數

有乙個整數陣列,請你根據快速排序的思路,找出陣列中第k大的數。給定乙個整數陣列a,同時給定它的大小n和要找的k k在1到n之間 請返回第k大的數,保證答案存在。測試樣例 1,3,5,2,2 5,3返回 2快排的思想 例如找49個元素裡面第24大的元素,那麼按如下步驟 1.進行一次快排 將大的元素放在...