Code Bye

请大家帮本人看看是不是这样实现呢?将N个数字读入数组,返回第k个最大者

把前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

算法是本人想的吗?后面应该用插入排序比较好吧

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明请大家帮本人看看是不是这样实现呢?将N个数字读入数组,返回第k个最大者