Пример варианты быстрой сортировки на golang

The Go Playground - запустить код

package main

import "fmt"

func qwik_sort(lst []int,left int,right int) []int{

    //Создаем копии пришедших переменных, с которыми будем манипулировать в дальнейшем.
    l := left
    r := right

    //Вычисляем 'центр', на который будем опираться. Берем значение ~центральной ячейки массива.
    center := lst[(left + right) / 2]

    fmt.Println(l,r,(left + right) / 2)

    //Цикл, начинающий саму сортировку
    for l <= r{

        //Ищем значения больше 'центра'
        for lst[r] > center{
            r--
        }

        //Ищем значения меньше 'центра'
        for lst[l] < center{
            l++
        }

        //После прохода циклов проверяем счетчики циклов
        if(l <= r){
            //И если условие true, то меняем ячейки друг с другом.
            lst[r],lst[l] = lst[l],lst[r]
            l++
            r--
        }
    }

    if r > left{
        qwik_sort(lst,left,r)
    }

    if l>right{
        qwik_sort(lst,l,right)
    }

    return lst
}

func main(){
    lst := []int{5,4,1,2,0,123,1234,32,12,2345,99}
    lst = qwik_sort(lst,0,len(lst)-1)
    fmt.Println(lst)
}