golang实现快排

func main()  {
   arr := []int{1, 9, 10, 3, 15, 8, 212}
   QuickSort(arr)
   fmt.Println(arr)
}

func QuickSort(arr []int)  {
   if len(arr) <= 1 {
      return
   }
   //1.选基准,定义左右指针
   s, e := 0, len(arr) -1
   flag := arr[0]

   //定义i从1开始,并且小于右边
   for i:=1; i <= e; {
      if arr[i] > flag {
         //如果大于flag,则和右边交换,并且右指针减1
         arr[i], arr[e] = arr[e], arr[i]
         e--
      } else {
         //否则和左边交换
         arr[i], arr[s] = arr[s], arr[i]
         i++
         s++
      }
   }
   //递归开始到左边,左边+1到截至
   QuickSort(arr[:s])
   QuickSort(arr[s+1:])
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值