已知(k1,k2,…,kn)是堆,试写一个算法将(k1,k2,…,kn,kn+1)调整为堆。按此思想写一个从率堆开始一个一个添人元素的建堆算法(提示:增加一个kn+1后应从叶子向根的方向调整)。

欢迎免费使用小程序搜题/刷题/查看解析,提升学历,成考自考报名,论文代写、论文查重请加客服微信skr-web

已知(k1,k2,…,kn)是堆,试写一个算法将(k1,k2,…,kn,kn+1)调整为堆。按此思想写一个从率堆开始一个一个添人元素的建堆算法(提示:增加一个kn+1后应从叶子向根的方向调整)。

此问题分为两个算法,第一个算法是sift,假设a[1],a[2],…,a[k]为堆,增加一个元素a[k+1],把数组a[1],a[2],…,a[k+1]iN,t整N堆。第二个算法是heap,它从1开始调用算法sift将整个数组调整为堆。 void sift(DataType A[],int k) { int x,i; x=A[k+1].key; i=k+1; while((i/2>0)&&(A[i/2].key>x)) //从下往上插入位置 { A[i].key=A[i/2].key; i=i/2; } A[i].key=x; } void heap(datatype A[],int n) //从1开始调用算法sift,将整个数组调整为堆 { int k: for(k=1;k

访客
邮箱
网址

通用的占位符缩略图

人工智能机器人,扫码免费帮你完成工作


  • 自动写文案
  • 自动写小说
  • 马上扫码让Ai帮你完成工作
通用的占位符缩略图

人工智能机器人,扫码免费帮你完成工作

  • 自动写论文
  • 自动写软件
  • 我不是人,但是我比人更聪明,我是强大的Ai
Top