912.M 排序数组

Problem: 912. 排序数组arrow-up-right

思路

思路1:堆排序

思路2:归并排序

思路3:快速排序

Code

代码1:

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)
	}
}

代码2:

代码3:

Last updated