利用C语言 写出完整代码:给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。输入第一行为数组,-1为结束标志,第二行为k值。输出第k大个元素。 输入样例: 3 2 1 5 6 4 -1 2 输出结果: 5
时间: 2024-03-10 19:49:08 浏览: 179
用C语言实现数组元素最大值/最小值查找、数组元素平均值计算、数组元素排序等功能
好的,以下是使用C语言实现的代码:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int partition(int *nums, int left, int right) {
int pivot = nums[left];
while (left < right) {
while (left < right && nums[right] <= pivot) {
right--;
}
nums[left] = nums[right];
while (left < right && nums[left] > pivot) {
left++;
}
nums[right] = nums[left];
}
nums[left] = pivot;
return left;
}
void quick_sort(int *nums, int left, int right) {
if (left >= right) {
return;
}
int pivot_index = partition(nums, left, right);
quick_sort(nums, left, pivot_index - 1);
quick_sort(nums, pivot_index + 1, right);
}
int main() {
int nums[1000];
int num, k;
int i = 0;
while (1) {
scanf("%d", &num);
if (num == -1) {
break;
}
nums[i++] = num;
}
scanf("%d", &k);
// 使用快速排序对数组进行降序排序
quick_sort(nums, 0, i - 1);
// 返回数组中第k个元素
printf("%d\n", nums[k - 1]);
return 0;
}
```
输入样例:
```
3
2
1
5
6
4
-1
2
```
输出结果:
```
5
```
希望这个答案能够解决你的问题!
阅读全文