根据如下请看,如何使用C语言实现堆元素的上移操作?

//元素上移(把第i个元素上移)
void sift_up(int h[],int i)
{
bool done=false;
if(i != 1)
{
while(!done && i !=1)
{
if(h[i]>[i/2]) swap(h[i],h[i/2]);
else done=true;
i=i/2;
}
}
}

这只是部分代码...
谁能教我写出完整代码?
要可以运行的
包含有main()函数

幕布斯6054654
浏览 134回答 1
1回答

holdtom

#include <stdio.h>void swap(int *a,int *b){int t=*a;*a=*b;*b=t;}void sift_up(int h[],int i){int done=0;if(i != 1){while(!done && i !=1){if(h[i]>[i/2]) swap(h[i],h[i/2]);else done=1;i=i/2;}}}int main(void){int i,a[10]={1,2,3,4,5,6,7,8,9};sift(a,5);for (i=0;i<10;++i) printf("%d\n",a[i]);return 0;}
打开App,查看更多内容
随时随地看视频慕课网APP