• 免费注册  马上登录
  • 切换到窄版
  • go语言|go语言部落|go文库

    查看: 77|回复: 0

    go语言实现快速排序

    [复制链接]

    15

    主题

    16

    帖子

    69

    积分

    网站编辑

    Rank: 8Rank: 8

    积分
    69
    发表于 2019-12-25 21:35:30 | 显示全部楼层 |阅读模式
    package main

    import "fmt"
    //快速排序 arr:个数组切片,start:始排序的位置值为0end束排序的位置len(arr)-1
    func QuickSort(arr []int, start, end int) {
       if start < end {
          i, j := start, end
          //pivot是中
    pivot := arr[(start+end)/2]
          //for的目是把比pivot小的放左,比pivot大的放右
    for i <= j {
             //pivot边找到大于等于pivot
    for arr[i] < pivot {
                i++
             }
             //pivot边找到小于等于pivot
    for arr[j] > pivot {
                j--
             }
             //pivot左右的
    if i <= j {
                arr[i], arr[j] = arr[j], arr[i]
                i++
                j--

             }
          }
          //向左递归
    if start < j {
             QuickSort(arr, start, j)
          }
          //向右递归
    if end > i {
             QuickSort(arr, i, end)
          }
       }
    }

    func main() {
       arr := []int{1,3,2,1,4,4,6,8,55,75,3,43,547,8,3454,2,3-12,43,5,-4343,6,0,8,5,9}
       QuickSort(arr, 0, len(arr)-1)
       fmt.Println(arr)
    }

    打印结果:

    [-4343 -9 0 1 1 2 2 3 3 4 4 5 5 6 6 8 8 8 9 43 43 55 75 547 3454]


    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Go语言社区

    GMT+8, 2020-4-2 01:24 , Processed in 0.039249 second(s), 17 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表