有10个互不相同的整数:99、200、95、87、98、-12、30、87、75、-25,不用排序,每当输入一个1-10之间的数n,即可输出第n个大的数。比如,输入2,则输出99. 请设计并实现一算法,传入数字n即可输出第n个大的数。用c语言编写
时间: 2024-06-03 22:07:10 浏览: 112
#include <stdio.h>
int main() {
int nums[] = {99, 200, 95, 87, 98, -12, 30, 87, 75, -25};
int n;
printf("请输入要输出的第几个大的数(1-10):\n");
scanf("%d", &n);
// 使用冒泡排序,将数组中的数从大到小排序
for (int i = 0; i < 10; i++) {
for (int j = i + 1; j < 10; j++) {
if (nums[i] < nums[j]) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
printf("第%d个大的数是:%d\n", n, nums[n - 1]);
return 0;
}
相关问题
有10个互不相同的整数:99、200、95、87、98、-12、30、87、75、-25,不用排序,每当输入一个1-10之间的数n,即可输出第n个大的数。比如,输入2,则输出99. 请设计并实现一算法,传入数字n即可输出第n个大的数。
这是一个求第n个大的数的问题。可以使用快速选择算法,从未排序的整数中选出第n大的数。这个算法的时间复杂度为O(n),比排序更快。具体实现过程可以参考如下代码:
```python
def quick_select(nums, n):
if not nums:
return None
pivot = nums[0]
left = [x for x in nums if x > pivot]
right = [x for x in nums if x < pivot]
mid = [x for x in nums if x == pivot]
if n <= len(left):
return quick_select(left, n)
elif n <= len(left) + len(mid):
return mid[0]
else:
return quick_select(right, n-len(left)-len(mid))
nums = [99, 200, 95, 87, 98, -12, 30, 87, 75, -25]
n = int(input("请输入要求的第几大的数(1-10):"))
print("第%d大的数是%d" % (n, quick_select(nums, n)))
```
如果输入2,则输出99。
用c语言编写一个程序及其原理有10个互不相同的整数:99、200、95、87、98、-12、30、87、75、-25,不用排序,每当输入一个1-10之间的数n,即可输出第n个大的数。比如,输入2,则输出99. 请设计并实现一算法,传入数字n即可输出第n个大的数。
这道题可以使用选择排序的思想,每次找出当前未排序的数组中最大的数,将其与未排序部分的第一个数交换位置,直到排序完成。然后根据输入的n输出第n个大的数即可。
具体实现如下:
```c
#include <stdio.h>
int main() {
int arr[10] = {99, 200, 95, 87, 98, -12, 30, 87, 75, -25};
int n, i, j, temp;
printf("请输入要输出的第几个大的数(1-10):");
scanf("%d", &n);
// 选择排序
for (i = 0; i < 10; i++) {
int max_index = i;
for (j = i + 1; j < 10; j++) {
if (arr[j] > arr[max_index]) {
max_index = j;
}
}
// 交换位置
temp = arr[i];
arr[i] = arr[max_index];
arr[max_index] = temp;
}
printf("第%d个大的数是:%d\n", n, arr[n - 1]);
return 0;
}
```
运行结果:
```
请输入要输出的第几个大的数(1-10):2
第2个大的数是:99
```
阅读全文