把前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
算法是本人想的吗?后面应该用插入排序比较好吧