go 快排

827 阅读1分钟

//快速排序
//(1) 选择基准值。 
//(2) 将数组分成两个子数组:小于基准值的元素和大于基准值的元素。 
//(3) 对这两个子数组进行快速排序
func QuickSort(array []int64) []int64  {
	if len(array) < 2{
		return array
	}
	base := array[0]
	ltArray := make([]int64, 0)
	gtArray := make([]int64, 0)
	for _, a := range array[1:]{
		if a <= base{
			ltArray = append(ltArray, a)
		}else {
			gtArray = append(gtArray, a)
		}
	}

	lt := QuickSort(ltArray)
	gt := QuickSort(gtArray)
	lt = append(lt, base)
	for _,v := range gt{
		lt = append(lt, v)
	}
	return lt
}