golang实现快速排序
package main
import (
"fmt"
"math/rand"
)
func QuickSort(slc []int) []int {
middleIndex := len(slc) / 2
middleItem := slc[middleIndex]
leftSlc := []int {}
rightSlc := []int {}
for i := 0; i < len(slc); i++ {
if i == middleIndex {
continue
}
if slc[i] <= middleItem {
leftSlc = append(leftSlc, slc[i])
}else {
rightSlc = append(rightSlc, slc[i])
}
}
return append(append(QuickSort(leftSlc), middleItem), QuickSort(rightSlc)...)
}
func main() {
slc := []int {}
for i := 0; i < 10; i++ {
slc = append(slc, rand.Intn(100))
}
fmt.Printf("Origin slice is: %vn", slc)
newSlc := QuickSort(slc)
fmt.Printf("Sorted slice is: %vn", newSlc)
}
近期评论