快速排序算法实现(递归)

Jaden · · 613 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

使用Golang实现的快速排序算法

func QuickSort(src []int) {
 if len(src) <= 1 {
      return
 }
 
 midV := src[0]
 length := len(src)
 leftIndex := 1
 rightIndex := length - 1
 for leftIndex <= rightIndex {
      for leftIndex < length && src[leftIndex] <= midV {
         leftIndex++
      }
      for rightIndex > 0 && src[rightIndex] > midV {
         rightIndex--
      }
      //swap
      if leftIndex < rightIndex {
         src[leftIndex], src[rightIndex] = src[rightIndex], src[leftIndex]
      }
   }
   
   //recursion sort sub src
   if rightIndex > 0 {
      src[0], src[rightIndex] = src[rightIndex], src[0]
   }
   
   // 给左子集排序
   if rightIndex > 0 {
      QuickSort(src[:rightIndex])
   }
   
   // 给右子集排序
   if rightIndex < length-2 {
      QuickSort(src[rightIndex+1:])
   }
}

有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:Jaden

查看原文:快速排序算法实现(递归)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

613 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传