//元素上移(把第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()函数
1 回答
holdtom
TA贡献1805条经验 获得超10个赞
#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;
}
- 1 回答
- 0 关注
- 131 浏览
添加回答
举报
0/150
提交
取消