Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1677343
  • 博文数量: 210
  • 博客积分: 10013
  • 博客等级: 上将
  • 技术积分: 2322
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-25 15:56
文章分类

全部博文(210)

文章存档

2011年(34)

2010年(121)

2009年(37)

2008年(18)

我的朋友

分类: C/C++

2010-09-03 17:43:51

void maxheapify(int *data,int i){
    int left = 2*i;
    int right = 2*i+1;
    int largest;
    if(data[i]<data[left])
        largest = left;
    else
        largest = i;
    if(data[right]>data[largest])
        largest = right;
    if(largest!=i){
        int temp = data[i];
        data[i] = data[largest];
        data[largest] = temp;
    }
    maxheapify(data,largest);
}
void initheap(int *data,int len){
    for(int i = len/2;i>0;--i)
        maxheapify(data,i);
}
void heapsort(int *data,int len){
    initheap(data,len);
    for(int i = len-1;i>1;--i){
        int temp = data[0];
        data[0] = data[i];
        data[i] = temp;
        maxheapify(data,0);
    }
}


阅读(1183) | 评论(1) | 转发(0) |
0

上一篇:约瑟夫环

下一篇:IP地址计算

给主人留下些什么吧!~~

chinaunix网友2010-09-07 08:25:47

Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com