从K个数里头找出最大的N个数,圣诞快乐
从K个数里面找出最大的N个数,圣诞快乐!
我要从大约20个数里面找出最大的3个数,所以我自己改写了一份code。我手动输入10个数字,然后希望输出3个最大的数字,但是结果只有最大的数字是正确的,第二个和第三个都是不对的,不知道哪个环节出了问题,很是纳闷,欢迎大家的建议。 圣诞节快乐
------解决方案--------------------
搜 最大堆...
------解决方案--------------------
1、声明一个20个元素的数组;
2、每输入一个数后,将这个数插入到数组中;
3、最后输出前3个元素即可。
其中第1和2步实际上是很自然的完成插入排序的过程。
------解决方案--------------------
按照从大到小的顺序插入到数组的合适位置,看一下插入排序就清楚了。
比如最初数组中的数据是:20 13 6 4
这时你输入的是:8
这样你一路比较过来,发现8比13小,比6大,所以插入进来变成:20 13 8 6 4,
这样全部数据输完,其实都已经排好顺序了。
我要从大约20个数里面找出最大的3个数,所以我自己改写了一份code。我手动输入10个数字,然后希望输出3个最大的数字,但是结果只有最大的数字是正确的,第二个和第三个都是不对的,不知道哪个环节出了问题,很是纳闷,欢迎大家的建议。 圣诞节快乐
#include <stdio.h>
#define N 3
int main()
{
int i,j;
int area;
int maxArea[N];
int empty = N;
for(j=0;j<10;j=j+1)
{
printf("Input:");
scanf("%d",&area);
printf("\n");
if(empty > 0)
{
maxArea[N-empty]=area;
empty=empty-1;
}
else
{
for(i=0; i < N; i=i+1)
{
if(area>maxArea[i])
{
maxArea[i]=area;
break;
}
}
}
}
printf("Area1=%d\n",maxArea[0]);
printf("Area2=%d\n",maxArea[1]);
printf("Area3=%d\n",maxArea[2]);
}
------解决方案--------------------
搜 最大堆...
------解决方案--------------------
1、声明一个20个元素的数组;
2、每输入一个数后,将这个数插入到数组中;
3、最后输出前3个元素即可。
其中第1和2步实际上是很自然的完成插入排序的过程。
------解决方案--------------------
按照从大到小的顺序插入到数组的合适位置,看一下插入排序就清楚了。
比如最初数组中的数据是:20 13 6 4
这时你输入的是:8
这样你一路比较过来,发现8比13小,比6大,所以插入进来变成:20 13 8 6 4,
这样全部数据输完,其实都已经排好顺序了。