寻找无序数组的第k大元素
程序员文章站
2024-03-15 22:22:06
...
堆排序最核心的算法是:adjustdown(int [] a, int index,int len)
从len/2开始到1号分别执行上述函数,就是建堆。
其实现大概是:
//小顶堆下调算法。
int tmp = a[index];
for(int k = index * 2;k <= len;k *= 2){
if(k + 1 <= len && a[k + 1] < a[k])
k++;
if(tmp > a[k])
break;
a[index] = a[k];
index = k;
}
还有个方法是快速排序。
上一篇: Unity碰撞检测实操