Задача: Сортировка массива

Задача: Сортировка массива

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




Report Page