/************************************************************************//* 求一组数据中的top(K)问题,这是一个经典的top(K)问题。分析:方法一:如果数据量不大,那么最常用的方法就是排序从大大小,然后找出前k个数据。比较高效率的排序算法,如快排,堆排序等,总体时间复杂度为 O(N*log2(N))+O(K)=O(N*log2(N))或是直接用部分排序算法,如选择排序,直接找出前K个元素,时间复杂度为O(N*K),至于O(N*log2(N)) 还是O(N*K)效率高,看K的取值,若K= K) break; if (h[p] < h[q] && h[p] < h[q+1])break; if (h[2*p+1] > h[2*p+2] ) q++; int tem = h[q]; h[q] = h[p]; h[p] = tem; p = q; }}