堆排序 思考

来源:互联网 发布:二维码在线设计软件 编辑:程序博客网 时间:2024/06/05 15:41

将整数数组(7-6-3-5-4-1-2)按照堆排序的方式原地进行升序排列,请问在整个排序过程中,元素3的数组下标发生过____次改变。


按整数数组的最大堆定义,每次调整完后根结点的元素与最后个元素交换,继续下次调整,直到所有的结点调整完毕。
原数组为 7 6 3 5 4 1 2 满足最大堆定义,直接交换根节点元素
               2 6 3 5 4 1 7,交换完毕
               6 5 3 2 4 1 7,调整完毕
               1 5 3 2 4 6 7,交换完毕
               5 4 3 2 1 6 7,调整完毕
               1 4 3 2 5 6 7,交换完毕
               4 2 3 1 5 6 7,调整完毕
               1 2 3 4 5 6 7,交换完毕,此时虽然已有序,但仍需进行最大堆调整,因为最大堆算法时间复杂度为nlog2n,会进行继续搜索调整
               3 2 1 4 5 6 7,调整完毕,移动一次
               1 2 3 4 5 6 7,交换完毕,移动两次
               2 1 3 4 5 6 7,调整完毕
               1 2 3 4 5 6 7,交换完毕