第k小的數

2021-08-18 18:46:37 字數 825 閱讀 9648

time limit: 5000 ms

memory limit: 65536 kib

problem description

現有乙個包含n個整數(1<=n<=10000000)的無序序列(保證序列內元素各不相同),輸入乙個整數k(1<=k<=n),請用較快的方式找出該序列的第k小數並輸出。

input

多組輸入。

首先輸入乙個資料組數t(1<=t<=100)

接下來是t組資料。

每組資料有兩行。

第一行先輸入兩個整數,n和k。

接下來是一行輸入n個由空格分開的互不相同的整數num(1<=num<=90000000)。

output

對於每組資料,輸出該組資料中第k小的數num。

sample input

1

6 43 2 5 1 4 6

sample output

4

#include

int a[10000001];

int find_k(int a, int l, int r, int k)

a[i] = a[j];

if(i < j && a[i] <= key)

a[j] = a[i];

}a[i] = key;

if(i == k)

else if(i > k)

else

}int main(void)

m = find_k(a, 1, n, k);

printf("%d\n", m);

}return 0;

}

第k小的數

輸入n個整數和乙個正整數k 1 k n 輸出這些整數從小到大排序後的第k個 思路1 最容易想到的方法 先對這個序列從小到大排序,然後輸出前面的最小的k個數即可。如果選擇快速排序法來進行排序,則時間複雜度 o n logn class solution 時間複雜度o nlogn 思路2 在思路1的基礎...

第k小的數

time limit 5000 ms memory limit 65536 kib submit statistic problem description 現有乙個包含n個整數 1 n 10000000 的無序序列 保證序列內元素各不相同 輸入乙個整數k 1 k n 請用較快的方式找出該序列的第k...

第k小的數

time limit 5000 ms memory limit 65536 kib submit statistic problem description 現有乙個包含n個整數 1 n 900000 的無序序列 保證序列內元素各不相同 輸入乙個整數k 1 k n 請用較快的方式找出該序列的第k小數...