读书人

编程之好读书笔记(4)寻找最大的K个数

发布时间: 2013-02-24 17:58:56 作者: rapoo

编程之美读书笔记(4)寻找最大的K个数

问题:

有很多无序的数,从中找出最大的K个数。假定他们都不相等。

解法一:

如果数据不是很多,例如在几千个左右,我们可以排一下序,从中找出最大的K个数。排序可以选择快速排序或者堆排序

#include<stdio.h>#include<string.h>const int MaxN = 100;int count[MaxN];int main(){int k = 3;int a[] = {3,17,8,27,7,20};memset(count,0,MaxN);//统计每个数重复次数for(int i = 0;i < 6;i++){count[a[i]]++;}//选取最大K个数int sumCount = 0;for(i = MaxN;i >= 0;i--){sumCount += count[i];if(sumCount >= k){break;}}//输出int index = i;for(i = index;i < MaxN;i++){if(count[i] > 0){printf("%d ",i);}}printf("\n");return 0;}




读书人网 >编程

热点推荐