堆排序(Julia实现)

function downAdjust(array, parentIndex, length)
# 记录父节点
temp = array[parentIndex]
# 定位左孩子
childIndex = 2 * parentIndex
while childIndex <= length
# 如果右孩子大于左孩子,则定位到右孩子
if childIndex + 1 < length && array[childIndex + 1] > array[childIndex]
childIndex += 1
end
# 父节点大于最大子节点时,退出下沉操作
if temp >= array[childIndex] break end
# 用最大子节点的值覆盖父节点
array[parentIndex] = array[childIndex]
parentIndex = childIndex
childIndex = 2 * childIndex
end
# 父节点赋值
array[parentIndex] = temp
end
function heapSort(array)
i::Int64 = length(array) / 2
# 将数组构建为二叉堆
while i >= 1
downAdjust(array, i, length(array))
i -= 1
end
print("$array==排序结果==>")
j = length(array)
while j > 1
# 第一个元素和最后一个元素交换
temp = array[j]
【堆排序(Julia实现)】array[j] = array[1]
array[1] = temp
# 下沉调整最大堆
downAdjust(array, 1, j)
j -= 1
end
print(arr)
end
#——————————————————————————
arr = [1 3 2 6 5 7 8 9 10 0]
println("开始堆排序")
print("$arr==二叉堆==>")
heapSort(arr)

    推荐阅读