第k大問題

2021-08-31 19:05:14 字數 570 閱讀 9886

/*

利用快排的特點(假設預設公升序排序),每一次快排操作都能確定乙個數在排序結果中的最終固定位置,即該位置 pos 上的數為 n - pos 大的數,且之後的數即為前 n - pos 大的數,故此方法即可求第k大的數 也可求前k大的數。

設取第k大的數,即index = k;

若 pos < index; 就繼續快排右側的資料;

若 pos > index; 就繼續快排左側的資料;

若 pos == index; 即要求的結果。

*/#includeusing namespace std;

const int maxn = 1e8+9;

int a[maxn];

int qsort(int l,int r)

a[l] = temp;

return l;

}int main()

int pos = qsort(l,r);

while(pos!=index)

cout << a[index] << endl;

return 0;

}

STL 排序類 解決第k大問題

前言 相信我們會遇到過在一堆無序的數字中,問你第k大的數字是哪乙個或者第k小的數字。當然,最簡單的做法就是排序,然後直接輸出第k大的數字,這樣的話時間複雜度約為n 3 2 給定乙個長度為n的整數數列,以及乙個整數k,請用快速選擇演算法求出數列的第k小的數是多少。輸入格式 第一行包含兩個整數 n 和 ...

快速排序實現與如何求解第K大問題

快速排序,這種排序方式時間複雜度平均情況下為o nlogn 而且適合資料非常多的排序方法。它採用一種分治思想 在執行的過程種就把第k大問題解決了。很簡單但是非常巧妙,不用額外申請記憶體空間。如下可以自己跑一下 package com.jxd.test public class quicksort n...

整體二分 區間第 K 小(大)問題 詳解

整體二分是乙個求解區間第k小 大 非常優秀的演算法,但是要求離線處理,對於所有詢問做整體的二分答案操作。相較於主席樹 樹套樹,整體二分 應該 更加優秀。我用主席樹與整體二分寫,並沒有發現在時間上整體二分快多少,我自己算時間複雜度也覺得兩者差不多 也可能我寫的太醜了 但是空間上整體二分當然非常佔優 上...