1. package sort
    2. import "fmt"
    3. func KuaiPai() {
    4. // 左右两边
    5. QuickSort(0, len(li)-1)
    6. fmt.Println(li)
    7. }
    8. var li = []int{3, 2, 9, 1, 4, 5, 12, 10}
    9. // 左右两边都进行查询,右边先开始,左边后开始
    10. func QuickSort(left, right int) {
    11. // 右边都数一定要大于左边都数
    12. if left >= right {
    13. return
    14. }
    15. i := left
    16. j := right
    17. // 设置基准数
    18. temp := li[left]
    19. for i != j {
    20. // 右边检测大于基准数都值
    21. for li[j] >= temp && j > i {
    22. j--
    23. }
    24. // 左边都值小于基准数都值
    25. for li[i] <= temp && i < j {
    26. i++
    27. }
    28. // 如果检测
    29. if i < j {
    30. li[i], li[j] = li[j], li[i]
    31. }
    32. }
    33. // 如果右边走完都话,左边就没有任何意义
    34. li[left] = li[i]
    35. li[i] = temp
    36. QuickSort(left, i-1) //继续处理左边的,这里是一个递归的过程
    37. QuickSort(i+1, right) //继续处理右边的 ,这里是一个递归的过程
    38. }

    参考地址:

    1. https://www.cnblogs.com/ahalei/p/3568434.html
    2. https://blog.csdn.net/pengzonglu7292/article/details/84938910