设为首页 加入收藏

TOP

c++实现堆排序教程
2017-12-29 06:06:33 】 浏览:273
Tags:实现 排序 教程

这是算法导论上的例题

可以参考以下伪代码

\

\

\

c++代码

#include
  
   
using namespace std;

//交换两数大小
void exchange(int &a,int &b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}
//左孩子,右孩子
int left(int i)
{
    return i*2;
}
int right(int i)
{
    return i*2+1;
}
//维护最大堆的函数
void maxHeapify(int array[], int len, int i)
{
    int l=left(i),r=right(i);
    int largest =i;
    if(l
   
    array[largest]) largest=l; if(r
    
     array[largest]) largest=r; if(largest!= i) { exchange(array[largest],array[i]); maxHeapify(array,len,largest); // 递归调整 } } //排序 void heapSort(int array[],int size) { for(int i=size/2-1;i>=0;--i) { maxHeapify(array,size,i); } for(int i=size-1;i>=1;--i) { exchange(array[0], array[i]); maxHeapify(array,i,0); } } int main() { int Array[10] = {16,4,10,14,7,9,3,2,8,1}; cout<<"原始堆为:"<
     
      

运行结果

\

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Error 3646:"fd"出现未.. 下一篇Google C++编程规范讲解

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目