将整数数组(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,交换完毕