Quicksort

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)
}