dongnguyenltqb
2/22/2020 - 4:55 AM

quicksort

package main

import "fmt"

func qs(l, r int, a []int) {
	if l >= r {
		return
	}
	i := l
	j := r
	k := int((l + r) / 2)
	for a[i] < a[k] {
		i++
	}
	for a[j] > a[k] {
		j--
	}
	if i <= j {
		t := a[i]
		a[i] = a[j]
		a[j] = t
		i++
		j--
	}
	qs(l, j, a)
	qs(i, r, a)
}

func main() {
	a := []int{88, 5, 4, 2, 7, 1, 2, 7, 2, 4}
	qs(0, len(a)-1, a)
	fmt.Println(a)
}