求n(2<=n<=10)个整数中倒数第二小的数。每一个整数都独立看成一个数,比如,有三个数分别是1,1,3,那么,第二小的数就是1。(每个数均小于100)说明:首先输入一个整数n,然后输入n个数。请输出第2小的数。
时间: 2024-03-23 22:41:35 浏览: 89
好的,这是一个简单的排序问题,可以使用任意一种排序算法来解决。以下是一种简单的选择排序的实现方式:
```python
n = int(input()) # 输入n
nums = list(map(int, input().split())) # 输入n个数,存储到一个列表中
# 选择排序
for i in range(n):
min_index = i
for j in range(i+1, n):
if nums[j] < nums[min_index]:
min_index = j
nums[i], nums[min_index] = nums[min_index], nums[i]
print(nums[1]) # 输出第2小的数
```
在这个代码中,我们首先输入n和n个数,然后使用选择排序的算法对这n个数进行排序,最后输出排序后第2小的数,也就是nums[1]。
相关问题
求n个整数中倒数第二小的数。 每一个整数都独立看成一个数,比如,有三个数分别是1,1,3,那么,第二小的数就是1。c++
下面是一种常规做法的C++代码实现:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
sort(nums.begin(), nums.end());
int cnt = 1, idx = 0;
while (cnt <= 2 && idx < n) {
if (nums[idx] != nums[idx - 1] || idx == 0) {
cnt++;
}
idx++;
}
if (cnt == 3) {
cout << nums[idx - 1] << endl;
} else {
cout << "不存在倒数第二小的数" << endl;
}
return 0;
}
```
首先读入n个整数并存储到一个vector中,然后对这些数进行排序。
接着,遍历排序后的数组,用cnt记录当前数不同的个数,idx记录当前遍历到的位置。如果cnt等于3,那么当前数就是倒数第二小的数,输出并结束程序;否则,继续遍历数组。
需要注意的是,当数组中有重复的数时,需要特殊处理,避免重复计数。
这个算法的时间复杂度为O(n log n),因为需要进行一次排序。
阅读全文