一、第k個元素:以盡量高的效率求出乙個亂序陣列中按數值順序的第k個元素
亂序陣列
法一:利用快速排序,演算法時間複雜度o(nlogn)
法二:利用分割槽排序法(雙向掃瞄法)
依次與主元比較,比主元大的排在右面不變,比主元小的指標交換位置,得到如下陣列
偽**
selectk
(a,p,r,k)
partition
(a,p,r)
**
package selectk;
public
class
selectk
private
static
intpartition
(int
a,int p,
int r)
public
static
void
main
(string[
] args)
;int k=
selectk
(a,0
,a.length,2)
; system.out.
println
(k);
assertionerror.
assertthat
(k).
isequalto(2
);}}
快速排序 快排求第K大
快速排序 快排採用分治的策略,先從數列中取出乙個元素作為作為基準元素,以基準元素為標準,將問題分解為兩個子串行,使小於基準的子串行在左側,使大於等於基準元素的子串行右側,對兩個子串行再進行快速排序,最終得到排好序的序列。時間複雜度 o nlogn 空間複雜度o logn 快速排序是不穩定的 code...
選擇第K大元素(快排 快選以及k 選取比較)
先看執行結果 按照書中所給的快排 快選以及k 選取演算法分別寫出函式檢測執行結果以及時間 發現不出所料的直接快排演算法會慢很多,但預想更穩定的k 選取演算法的耗時比預期設想要大,而相對不太穩定的快選演算法卻是三者之中最快的,為了避免偶然性,又重複做了多組實驗,並將n的範圍擴大到100 1000000...
快排思想之陣列中的第K個最大元素
在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。示例 1 輸入 3,2,1,5,6,4 和 k 2 輸出 5示例 2 輸入 3,2,3,1,2,4,5,5,6 和 k 4 輸出 4class solution object ...