输入 n 个整数和一个一个正整数k (1<=k<=n),输出这些整数从小到大排序后的第k个(例如,k=1就是最小值)。n<=10 7
时间: 2024-10-12 07:18:06 浏览: 34
这道题可以使用选择排序的思想,每次找到当前未排序部分中最小的数,放到已排序部分的末尾。具体步骤如下:
1. 输入 n 个整数和一个正整数 k。
2. 对这 n 个整数进行选择排序。
3. 输出排序后的第 k 个数。
代码如下:
```
#include <stdio.h>
int main() {
int n, k, i, j, tmp;
int arr[10];
printf("请输入整数个数n(n<=10): ");
scanf("%d", &n);
printf("请输入%d个整数: ", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("请输入k(1<=k<=n): ");
scanf("%d", &k);
for (i = 0; i < n - 1; i++) {
int min_index = i;
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[min_index]) {
min_index = j;
}
}
tmp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = tmp;
}
printf("排序后的%d个整数: ", n);
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
printf("第%d个数是: %d\n", k, arr[k - 1]);
return 0;
}
```
阅读全文