Пример варианты быстрой сортировки на 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) }
Комментарии 0
Пока нет комментариев. Станьте первым!