Задача: Сортировка массива
https://t.me/Golang_googleУсловие: дается массив целых чисел nums, отсортируйте массив в порядке возрастания и верните его.
Вы должны решить проблему без использования каких-либо встроенных функций в O(nlog(n)) временной сложности и с наименьшей возможной пространственной сложностью.
Пример:
Ввод: nums = [5,2,3,1]
Вывод: [1,2,3,5]
Ввод: nums = [5,1,1,2,0,0]
Вывод: [0,0,1,1,2,5]
Решение:
Go
func sortArray(nums []int) []int {
helper(nums, 0, len(nums) - 1)
return nums;
}
func helper(nums []int, i int, j int) {
if (i >= j) {
return;
}
index := partition(nums, i, j);
helper(nums, i, index - 1)
helper(nums, index + 1, j)
}
func partition(nums []int, i int, j int) int {
pivot := nums[j];
index := i;
for low := i; low < j; low++ {
if nums[low] < pivot {
nums[index], nums[low] = nums[low], nums[index];
index++;
}
}
nums[index], nums[j] = nums[j], nums[index];
return index;
}