标题:最小堆,执行不出结果
只看楼主
http8852490
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-11-1
结帖率:50%
 问题点数:0 回复次数:1 
最小堆,执行不出结果
#include<iostream.h>
void swap(int &a,int &b){int c;c=a;a=b;b=a;}
class minheap{
private:
    int a[100];
    int csize,msize;
public:
    minheap(int b[],int m);
    void siftdown(int parent);
    void siftup(int j);
    void buildheap();
    void output();};
minheap::minheap(int b[],int m)
{int i;
for(i=0;i<m;i++)  a[i]=b[i];
csize=m;}
void minheap::siftdown(int parent)
{int i=parent;int j;
 j=2*i+1;                         //j为i的左孩子
while(j<csize){
    if((j<csize-1) && (a[j]>a[j+1]))   
        j++;
    if(a[i]>a[j]){
        swap(a[i],a[j]);
        i=j;
        i=2*j+1;}
    else break;}}
void minheap::siftup(int j)
{int p=(j-1)/2;
while((j>0) && (a[p]>a[j])){
    swap(a[j],a[p]);
    j=p;}}
void minheap::buildheap(){
for(int i=csize/2-1;i>=0;i++)   
siftdown(i);}
void minheap::output(){
for(int i=0;i<csize;i++)
cout<<a[i]<<' ';
cout<<endl;}
void main()
{int a[10]={14,25,20,17,24,22,26,18,15,12};
minheap A(a,10);
A.buildheap(); A.output();}




      
搜索更多相关主题的帖子: private void include public parent 
2012-11-24 21:28
asd12345654
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2012-8-10
得分:0 
void swap(int &a,int &b){int c;c=a;a=b;b=a;}你这是要交换a和b的值吗?
如果是的话应该才void swap(int &a,int &b){int c;c=a;a=b;b=c;}
2012-11-25 00:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-388304-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.524125 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved