912.M 排序数组
思路
Code
func sortArray(nums []int) []int {
if len(nums) < 1 {
return nums
}
for i := len(nums) / 2 - 1; i >= 0; i-- {
maxHeapify(nums, i, len(nums))
}
for i := len(nums) - 1; i > 0; i-- {
nums[0], nums[i] = nums[i], nums[0]
maxHeapify(nums, 0, i)
}
return nums
}
func maxHeapify(nums []int, root int, size int) {
l := 2*root + 1
r := 2*root + 2
largest := root
if l < size && nums[l] > nums[largest] {
largest = l
}
if r < size && nums[r] > nums[largest] {
largest = r
}
if largest != root {
nums[root], nums[largest] = nums[largest], nums[root]
maxHeapify(nums, largest, size)
}
}Last updated