高桥美惠 2016-03-12 14:14 采纳率: 0%
浏览 555

请问这个堆排序哪里有问题?

#include
#include

int left(int i)
{ return (i<<1);
}

int right(int i)
{ return (i<<1+1);
}

void exchange(int A[10],int i,int j)
{ int temp;
temp=A[i-1]; A[i-1]=A[j-1]; A[j-1]=temp;
}

void MAX_HEAPIFY(int A[10],int i,int length,int heapsize)
{ int l,r,largest;
l=left(i); r=right(i);
if(l<=heapsize && A[l-1]>A[i-1])
l=largest;
else
i=largest;
if(r<=heapsize && A[r-1]>A[i-1])
r=largest;
if(i!=largest)
{ exchange(A,i,largest);
MAX_HEAPIFY(A,largest,length,heapsize);
}

}

void BUILD_HEAP(int A[10],int length,int heapsize)
{ for(int i=floor(length/2);i>=1;i--)
MAX_HEAPIFY(A,i,length,heapsize);
}

void HEAPSORT(int A[10],int length,int heapsize)
{ BUILD_HEAP(A,length,heapsize);
for(int i=length;i>1;i--)
{ exchange(A,1,heapsize--);
MAX_HEAPIFY(A,1,length,heapsize);
}
}

int main()
{ int A[10]={12,1,5,2,3,8,6,7,9,15},length=10,heapsize=10;
HEAPSORT(A,length,heapsize);
for(int i=0;i<10;i++)
printf("%d ",A[i]);
}

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 【提问】基于Invest的水源涵养
    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名
    • ¥65 汇编语言除法溢出问题
    • ¥15 Visual Studio问题