// 快速排序 func QuickSort(arr []int) []int { // 如果数组长度小于等于1,则直接返回 if len(arr) <= 1 { return arr } // 取数组中间元素作为基准 pivot := arr[len(arr) / 2] // 定义两个切片,分别存放比基准小的元素和比基准大的元素 left := make([]int, 0, len(arr)) right := make([]int, 0, len(arr)) // 遍历数组,将比基准小的元素放入left,比基准大的元素放入right for _, v := range arr { if v < pivot { left = append(left, v) } else if v > pivot { right = append(right, v) } } // 递归调用快速排序,对left和right分别排序 left = QuickSort(left) right = QuickSort(right) // 将排序后的left,基准,right拼接到一起 left = append(left, pivot) left = append(left, right...) // 返回排序后的数组 return left }