给定一个不少于50个关键字的无序数据集合,在不排序的情况下编程找出第2小的关键字。
#include<stdio.h>
int main() {
int result, min1, min2, min3, i, j;
int data[52] = {56, 77, 34, 2, 8, 13, 45, 87, 9, 6, 88, 16, 15, 33, 24, 58, 65, 32, 11, 90, 14, 10, 34, 59, 60, 93, 96, 39, 43, 62, 51, 13, 55, 69, 98, 48, 40, 50, 86, 79, 36, 48, 53, 29, 110, 321, 106, 105, 999, 330, 888, 230};
min1 = data[0];
for ( i = 1; i < 52; i++) {//找最小
if (data[i] < min1) {
min1 = data[i];
j = i;
}
}
min2 = data[0]; //找第二小
for (i = 1; i < j; i++) {
if (data[i] < min2) {
min2 = data[i];
}
}
min3 = data[0];
for (i = j + 1; i < 52; i++) {
if (data[i] < min3) {
min3 = data[i];
}
}
if (min2 < min3)
result = min2;
else
result = min3;
printf("第二小为:%d", result);
return 0;
}
运行结果为: