把前k个元素读入数组并(以递减的顺序)对其排序。接着,将剩下的元素再逐个读入,当新元素被读到时,假如它小于数组中的第k个元素则忽略,否则就将其放到数组正确的位置上,同时将数组中的第一个元素挤出数组。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(int argc, char *argv[])
{
int i = 0;
int k = 3;
int number[10] = { 0 };
printf("输入4个数字: ");
for (i = 0;i < 4;i++) {
scanf("%d", &number[i]);
getchar();
}
/*从大到小进行冒泡排序*/
number_bubble_sort(number, 4, 2);
printf("输入剩下6个数字: ");
for (i = 4;i < 10;i++) {
scanf("%d", &number[i]);
getchar();
if (number[i] < number[k]) {
continue;
}
else {
number[k + 1] = number[i];
/*将number数组里面的数进行从大到小排序*/
number_bubble_sort(number, 5, 2);
}
}
printf("第 %d 个元素是: %d!\n", k, number[k]);
getchar();
return 0;
}
解决方案
20
算法是本人想的吗?后面应该用插入排序比较好吧