为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C C++
幕布斯6054654 2022-03-18 15:11:41
//元素上移(把第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;
}



查看完整回答
反对 回复 2022-03-22
  • 1 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信