go語言實現快速排序
阿新 • • 發佈:2018-12-09
快速排序作為分治法的經典演算法,原理自不必多說,我只是用go語言直接實現了,當然可以不用中間切片,但是這種寫法最能體現快速排序的分治思想。
package main import "fmt" // 快速排序(直接)實現 func quickSort(s []int) []int { if len(s) < 2 { return s } v := s[0] var left, right []int for _, e := range s[1:] { if e <= v { left = append(left, e) } else { right = append(right, e) } } // 實現了“quickSort(left) + v + quickSort(right)”的操作 return append(append(quickSort(left), v), quickSort(right)...) } func main() { a := []int{9,0,5,2,1,3,4,5,6,8,7} fmt.Println("quick sort result: ", quickSort(a)) }