码迷,mamicode.com
首页 > 编程语言 > 详细

堆排序

时间:2019-09-21 23:07:18      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:api   cout   span   tree   nbsp   数组   heap   个数   namespace   

堆最好是使用数组来表示。。。。。

#include<iostream>
using namespace std;

void swap(int arr[],int i,int j)
{
    int temp = arr[i];
    arr[i]=arr[j];
    arr[j]=temp;
}
void heapify(int tree[],int n,int i)//n代表节点的数目,i代表对那个数字进行操作 
{
    if(i>=n)
    {
        return ;
    }
    int c1=2*i+1;//左儿子 
    int c2=2*i+2;//右儿子 
    int max =i;
    if(c1<n&&tree[c1]>tree[max])
    {
        max=c1;
    }
    if(c2<n&&tree[c2]>tree[max])
    {
        max=c2;
    }
    if(max !=i)
    {
        swap(tree,max,i);
        heapify(tree,n,max);
    }
}
int main()
{
    int tree[]={4,10,3,5,1,2};//待排序的堆 
    int n=6;
    heapify(tree,n,0);
    for(int i=0;i<n;i++)//打印排序后的结果 
    {
        cout<<tree[i]<<endl;
    }
    return 0;
}

 

堆排序

标签:api   cout   span   tree   nbsp   数组   heap   个数   namespace   

原文地址:https://www.cnblogs.com/chuxinbubian/p/11564893.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!