二分法與快排結合(2)

2021-08-10 11:55:20 字數 938 閱讀 5083

時間限制:

10000ms

單點時限:

1000ms

記憶體限制:

256mb

描述在上一回裡我們知道nettle在玩《艦これ》,nettle的鎮守府有很多船位,但船位再多也是有限的。nettle通過撈船又出了一艘稀有的船,但是已有的n(1≤n≤1,000,000)個船位都已經有船了。所以nettle不得不把其中一艘船拆掉來讓位給新的船。nettle思考了很久,決定隨機選擇乙個k,然後拆掉稀有度第k小的船。 已知每一艘船都有自己的稀有度,nettle現在把所有船的稀有度值告訴你,希望你能幫他找出目標船。

輸入第1行:2個整數n,k。n表示陣列長度,

第2行:n個整數,表示a[1..n],保證不會出現重複的數,1≤a[i]≤2,000,000,000。

輸出第1行:乙個整數t,表示t在陣列中是第k小的數,若k不在陣列中,輸出-1。

樣例輸入

10 4

1732 4176 2602 6176 1303 6207 3125 1 1011 6600

樣例輸出

1732#include/*採用兩頭交換法*/

using namespace std;

int a[1111111];

int n,k;

void search(int l,int r)

}while(m<=t);

if(t==m-2)//這個條件關鍵(它是唯一能確定當前所指向的數順序排第幾)

int main()

{ cin>>n>>k;

int i;

for(i=1;i<=n;i++)

cin>>a[i];

if(k<=0||k>n)

cout<<-1<

本次題目我看了網上是快排標準法比較多,我就嘗試了一下兩頭交換法與二分的結合,寫的不好的地方希望網者指正。

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

二分法,二分搜尋

二分法是乙個應用很廣泛的演算法 好吧,剛說出這句話的時候,我查了一下資料,發現我了解的應用寥寥無幾.ok,既然不知道,那就下次補充把。咱們直接進入主題。二分法 bisection method 是一種方程式根的近似值求法。演算法 若要求已知函式f x 0的值則 1.先找出乙個區間 a,b 使得f a...