正在加载图片...
个元素,rn+1j用于存放新插入的元素。由 于原来的n个元素已经构成堆,则当插入 个元素时,有可能破坏堆的结构,所以 需依据情况进行调整,此时仅需要从rn+1 出发, 走一条从叶子结点rn+1到根结点r[1的 路径(设为小根堆)。每次就该结点r和 其双亲结点进行比较,若 r[] key>r[key,此时算法结束,不需要 进行调整,此时r[到rn+1即为堆,否则, 将r{与r进行交换,继续和上一层结点 比较,直到根结点为止 [算法实现] #define n 15 #define datatype int typedef struct Int key;∥关键字域 datatype other/∥其它域 grectlype, ∥堆r[到rn中插入一个新元素 heapinsert(r, x) rectype rl datatype x while(>l)个元素,r[n+1]用于存放新插入的元素。由 于原来的 n 个元素已经构成堆,则当插入 一个元素时,有可能破坏堆的结构,所以 需依据情况进行调整,此时仅需要从 r[n+1] 出发, 走一条从叶子结点 r[n+1]到根结点 r[1]的 路径(设为小根堆)。每次就该结点 r[j]和 其双亲结点 r[I] 进 行 比 较 , 若 r[I].key>r[I].key,此时算法结束,不需要 进行调整,此时 r[1]到 r[n+1]即为堆,否则, 将 r[I]与 r[j]进行交换,继续和上一层结点 比较,直到根结点为止。 [算法实现] #define n 15 #define datatype int typedef struct {int key;//关键字域 datatype other;//其它域 }rectlype; rectype r[n]; //在堆 r[1]到 r[n]中插入一个新元素 heapinsert(r,x) rectype r[]; datatype x; { int I,j; j=n+1; while(j>1)
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有