从一组数据中寻找第K大的数

问题描述:给出一组数据,如:整型数组 int a[]={10,1,3,6,9,39,20,12,33,54} 用尽可能快的方法找出第K大的位置(如:k=5时即第5大的数据应为12)。分析问题:首先,如果求解问题是需要从一组数据寻找最值时(最大值或者最小值时)可能比较方便,一般作法是先排序,然后最首或者尾位置即可。但现在需要求解的不一定是指最值,而是求第K大最值。那么同样处理思路是分步,即先排序然后求对应K位置。经过简单的分析,下面给出Demo(C语言)//下面为排序设计两个函数int partition(const int * na, int low, int hight);//标注位置int
posted on 2010-10-22 17:20  陈国利  阅读(2342)  评论(4编辑  收藏  举报