找第K大或者小的數

2022-07-19 09:54:11 字數 822 閱讀 2306

這個題的解法:可以先通過排序得到第k個數即是第k大數。

第二種解法就是利用快速排序的partition,這是一種隨機演算法,最壞情況下是n平方的,但是 平均情況下是 線性的。

**如下:

//此劃分的原理為,預設將地位的資料儲存,然後利用這個位置作為緩衝,

//不斷賦值。其中start永遠指向空位。最後將儲存的資料放入空位即可

intpartition(

ints,

intstart,

intend)

s[start] =t;

return

start;

}void

printarray(

intw,

intn)

cout

<<

endl;

}int

find_k(

ints,

intn,

intk)

else

}return

s[k];

}void

main()

;cout

<<

find_k(w,

sizeof

(w)/

sizeof

(int

),13

) <<

endl;

printarray(w,

sizeof

(w)/

sizeof

(int

));}

3。 第三種方法可以採用演算法導論上的select演算法。

4。當然 還可以通過插入排序。或者堆都可以弄出來.. 

找第k小的數

description 給出一串數列,輸出其中第k小的數 input對於每乙個測試案例,通過鍵盤逐行輸入,第1行是輸入整數n 和 k 如果這兩個整數是0 就表示結束,不需要再處理 n表示有n個數,k表示第k小的數,接下來一行輸入n個數 output輸出第k小的數的值 example input 5 ...

找第k小的數

設計乙個平均時間為o n o n o n 的演算法,在n 1 n 1000 n 1 n 1000 n 1 n 1 000 個無序的整數中找出第k小的數。因為本題要求使用o n o n o n 的時間,所以不能直接採用排序然後輸出的方法來解題。因此採用分治方法,先任意找陣列中的乙個元素 a aa 中的...

nth element 找第k大的數

nth element用於排序乙個區間,它使得位置n上的元素正好誰全排序情況下的第n個元素,而且,當nth element返回的時候,所有按照全排序規則排在位置n之前的元素也都排在位置n之前,按照全排序規則排在n之後的元素全都排在位置n之後。所以,我們使用nth element既可以尋找最好的前k個...