设为首页 加入收藏

TOP

算法----堆排序(heap sort)
2015-02-02 14:43:41 来源: 作者: 【 】 浏览:34
Tags:算法 ---- 排序 heap sort

算法实现:


调整堆:


?void sort::sink(int* a, const int root, const int end)
{
?int i=root;
?while(2*i +1? <= end)
?{
? int k = 2*i+1;
? if(k+1<=end && a[k]? ?k++;
? if(a[k] < a[i])
? ?break;
? swap(a,k,i);
? i=k;
?}
}


堆排序:


void sort::heap_sort(int* a, const int n)
{
?for(int i=(n-1)/2; i>=0; i--)
? sink(a,i,n-1);
?for(int i=n-1; i>0;)
?{
? swap(a,0,i);
? i--;
? sink(a,0,i);
?}
}


上述是堆排序的简单介绍。具体的优化以及应用稍后奉上。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇大-小顶混合堆的实现与应用(a min.. 下一篇算法---快速排序(quick sort)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: