有10个互不相同的整数:99、200、95、87、98、-12、30、87、75、-25,不用排序,每当输入一个1-10之间的数n,即可输出第n个大的数。比如,输入2,则输出99. 请设计并实现一算法,传入数字n即可输出第n个大的数。c语言代码的原理是什么
时间: 2024-05-10 07:21:11 浏览: 8
一种简单的算法是使用选择排序,每次找到未排序部分中的最大值,将其移动到已排序部分的末尾,直到找到第n个大的数为止。具体实现过程如下:
1. 定义一个数组存储给定的10个整数。
2. 循环n次,每次找到未排序部分中的最大值,并将其与未排序部分的最后一个元素交换位置,将已排序部分的长度加1。
3. 输出已排序部分的最后一个元素即为第n个大的数。
C语言代码如下:
```
#include <stdio.h>
int main() {
int a[] = {99, 200, 95, 87, 98, -12, 30, 87, 75, -25};
int n, i, j, max, temp;
printf("请输入要查询的第n个大的数:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
max = i;
for (j = i + 1; j < 10; j++) {
if (a[j] > a[max]) {
max = j;
}
}
temp = a[i];
a[i] = a[max];
a[max] = temp;
}
printf("第%d个大的数为:%d\n", n, a[n-1]);
return 0;
}
```
每次循环找到未排序部分中的最大值,并将其移动到已排序部分的末尾,因此循环n次后已排序部分的长度为n,第n个大的数即为已排序部分的最后一个元素a[n-1]。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)