现有 n 个正整数,要求出这 n 个正整数中的第 k 个最小整数C语言不用函数
时间: 2024-10-20 17:06:28 浏览: 20
在 C 语言中,如果你想找出给定数组中的第 k 小元素而不需要函数,你可以使用选择排序或者其他遍历算法结合堆数据结构。这里提供一种简单的选择排序法和快速寻找 k 的思路:
```c
#include <stdio.h>
// 找到数组中的第k小元素
int find_kth_smallest(int arr[], int n, int k) {
for (int i = 0; i < n - 1; i++) { // 遍历所有元素
int min_index = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[min_index]) { // 如果找到更小的元素
min_index = j; // 更新最小索引
}
}
// 把当前最小的元素放到原位置 k
if (i + 1 == k) {
return arr[min_index];
} else {
int temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
}
return arr[n - 1]; // 如果 k 大于数组长度,返回最后一个元素
}
int main() {
int n, k;
printf("请输入数组的元素个数和需要找的第 k 小元素的位置:");
scanf("%d %d", &n, &k);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int result = find_kth_smallest(arr, n, k);
printf("第 %d 个最小的元素是:%d\n", k, result);
return 0;
}
```
这个程序会直接在原始数组上操作,找到第 k 小的元素,并打印结果。注意,这种方法的时间复杂度是 O(n^2),对于大规模数据可能会效率较低。
阅读全文