找第2小数 | ||
---|---|---|
Time Limit: 1000 MS | Memory Limit: 1000 KB |
Description
给定一维int型数组, 请找到第2大的数.
Input
输入第1行有一个int型正整数m (m<100), 表示有m行输入.
每行输入的第一个数为int型正整数n (0<n<1000), 后面接着输入n个int型整数.
Output
输出m行, 每行为找第2大数.
Sample Input
2
8 3 8 4 1 6 7 3 2
9 2 4 5 9 8 7 6 4 3
Sample Output
2
3
一:暴力解决。
进行排序后,直接输出第二位,
#include <iostream>
using namespace std;
int main()
{
int T,N;
cin >> T;
for (int K = 0; K < T; K++) {
cin >> N;
int* a = new int[N];
for (int i = 0; i < N; i++) {
cin >> a[i];
}
for (int i = 0; i < N - 1; i++) { //控制n-1趟冒泡
for (int j = 0; j < N - 1 - i; j++)
{
if (a[j] > a[j + 1]) { //比较相邻的两个元素
int tmp; //临时变量
tmp = a[j]; //交换
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
cout << a[1] << endl;
}
}
二:采用分治算法,(正在写)