由無序陣列中找到第K 大的元素

2021-07-04 01:13:30 字數 646 閱讀 3159

當然如果我們想要實現這個問題會有很多思路,可以將原來的陣列進行排序即可,直接隨機訪問到第k個元素即可。

我們專門寫一篇部落格當然不是想利用這種思路的,可以試試改進的快速排序啊,對不,我個人覺得是利用了兩種思路乙個是快速排序乙個是二分查詢,在進行快速排序的時候,在指定範圍內找到該值的下標,如果該下標與k值相比比較大,則結束end=index-1,相反的話  start=index+1即可

當然因為是第k大,所以陣列應該是降序排列的

int a=;

const int k=6;

//解題思路就是利用快速排序,如果得到快速排序一次中間結果之後其所在位置即在

int qsort(int* a,int low,int high)

a[end]=a[start];

} a[start]=key;

return start;

} return -1;

}int main()

} cout《由此還可以引申出另乙個 問題的解決方案,,也即最小的k個數

其思路就跟快速排序是一樣的,只是將陣列進行公升序排列,然後,找到位於第k小的元素,那麼該元素之前的所有元素都比這個小,也就找到了最小的k個元素,但是不一定是排序的

程式設計 無序陣列中找到最大乘積 python

給定乙個無序陣列,包含正數 負數和0,要求從中找出3個數的乘積,使得乘積最大,要求時間複雜度 o n 空間複雜度 o 1 輸入描述 輸入共2行,第一行包括乙個整數n,表示陣列長度 第二行為n個以空格隔開的整數,分別為a1,a2,an輸出描述 滿足條件的最大乘積示例 輸入 3 4 1 2 輸出 確定5...

找到無序陣列中最小的k個數

找到無序陣列中最小的k個數 給定乙個整型陣列arr,找到其中最小的k個數。輸入描述 輸入包含兩行,第一行包含兩個整數n和k 1 k n 105 1 leq k leq n leq 10 5 1 k n 105 代表陣列arr的長度,第二行包含n個整數,代表陣列arr 1 a rri 109 arr ...

python 實現在無序陣列中找到中位數方法

一 問題描述 1 求乙個無序陣列的中位數,若陣列是偶數,則中位數是指中間兩個數字之和除以2,若陣列是奇數,則中位數是指最中間位置。要求 不能使用排序,時間複雜度盡量低 2 例如 lists 3,2,1,4 中位數為 2 3 2 2.5 lists 3,1,2 中位數為 2 3 演算法思想 利用快速排...