有10个互不相同的整数:99、200、95、87、98、-12、30、87、75、-25,不用排序,每当输入一个1-10之间的数n,即可输出第n个大的数。比如,输入2,则输出99. 请设计并实现一算法,传入数字n即可输出第n个大的数。
时间: 2024-01-31 19:02:25 浏览: 29
这是一个求第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
```
在c语言中产生20个互不相同的10~99随机整数保存到数组中
可以使用 rand() 函数和循环语句来产生随机数,并使用一个数组来保存这些数。具体方法如下:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nums[20]; // 声明一个包含20个元素的数组
srand(time(NULL)); // 初始化随机数种子
for (int i = 0; i < 20; i++)
{
int num = rand() % 90 + 10; // 产生一个10~99之间的随机数
int j;
// 检查该随机数是否和已有的数重复
for (j = 0; j < i; j++)
{
if (num == nums[j])
{
break;
}
}
if (j == i) // 如果没有重复,则保存到数组中
{
nums[i] = num;
}
else // 如果有重复,则继续产生新的随机数
{
i--;
}
}
// 输出结果
for (int i = 0; i < 20; i++)
{
printf("%d ", nums[i]);
}
return 0;
}
```
这个程序会产生20个不重复的随机整数,并将它们保存到一个数组中,最后输出这些数。注意,我们在产生随机数之前,用 time() 函数获取当前时间作为随机数种子,这样每次运行程序都会得到不同的随机数序列。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)