已知一关键码序列为:3,87,12,61,70,97,26,45.试根据堆排序原理,建立堆结构:_____________建立堆结构:97,87,26,61,70,12,3,45 是如何建立堆排序的?
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/24 01:41:05
已知一关键码序列为:3,87,12,61,70,97,26,45.试根据堆排序原理,建立堆结构:_____________建立堆结构:97,87,26,61,70,12,3,45 是如何建立堆排序的?
已知一关键码序列为:3,87,12,61,70,97,26,45.试根据堆排序原理,建立堆结构:_____________
建立堆结构:97,87,26,61,70,12,3,45
是如何建立堆排序的?
已知一关键码序列为:3,87,12,61,70,97,26,45.试根据堆排序原理,建立堆结构:_____________建立堆结构:97,87,26,61,70,12,3,45 是如何建立堆排序的?
八个元素,数组1到8;然后调用HeapAdjust(array,i,n);array是数组,n是要调整最后一个数,i是要调整的第一个数.把堆想像成一棵二叉树,根椐特性,数组为i的左孩子是2i,右是2i+1.建立堆结构,目标建大顶堆,即是父母结点比左右孩子都要大,即array[1]要比array[1*2]与array[1*2+1]要大,array[2]要比array[2*2]与array[2*2+1]要大,如此类推.实际调整过程是采取向下滚的方式,选择中间值,即8除2=4,由4向下滚,找array[8]与array[9]最大的(前提是该数组存在啊,现在是打比喻),array[4]与最大比较,如果4那个较大就不用调整直接结束,如果不是则交换,比如array[4]比array[8]小,则4与8数组值交换,再以array[8]以刚才4同样方式向下比较,直到结束.4完了后从3开始再次调,3到2,2到1,1就结束了.如题,61到45大,不动.12:97比26大,12比97小交换,再调12但后面没元素所以结束(3,87,97,61,70,12,26,45).87:70比61大,但87亦比70大,所以不动.3:97>87,397,26>12,326,后面没了,所以最终答案为(97,87,26,61,70,12,3,45)