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
16 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小數...