美文网首页
Go-快速排序

Go-快速排序

作者: KN郑某某 | 来源:发表于2019-08-27 16:59 被阅读0次

快速排序

  • 算法实现
func partition(nums []int, left int, right int) int {
    value := nums[left] // 基准值
    for left < right {
        for nums[right] >= value && left < right { // 依次查找大于等于基准值的位置
            right--
        }
        nums[left] = nums[right]
        for nums[left] < value && left < right { // 依次查找小于基准值的位置
            left++
        }
        nums[right] = nums[left]
    }
    nums[left] = value
    // 最终 left == right 就是基准值的位置
    return left
}

func QuickSort(list []int, left int, right int) {
    if left < right {
        middle := partition(list, left, right)
        QuickSort(list, left, middle-1)
        QuickSort(list, middle+1, right)
    }
}
  • 测试代码
func main() {
    list := []int{8, 4, 2, 9, 10, -3, 3, 20, 15, -1}
    QuickSort(list, 0, len(list)-1)
    fmt.Println(list)
}
  • 排序结果

[-3 -1 2 3 4 8 9 10 15 20]

  • 时间复杂度

O (nlogn)

相关文章

  • Go-快速排序

    快速排序 算法实现 测试代码 排序结果 [-3 -1 2 3 4 8 9 10 15 20] 时间复杂度 O (n...

  • Go-堆排序

    堆排序 算法实现 测试代码 排序结果 [-3 -1 2 3 4 8 8 9 10 15 20] 时间复杂度 O (...

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 面试准备--排序

    堆排序 快速排序(simple) 快速排序(regular) 归并排序 Shell排序 插入排序 选择排序 冒泡排序

  • 排序

    插入排序 选择排序 冒泡排序 归并排序 快速排序* 三路快速排序

  • 算法笔记01-排序#2

    快速排序敢叫快速排序,那它一定得快。 快速排序 概述 快速排序也是分治排序的典型,它快,而且是原地排序。不过,要防...

  • PHP 实现快速排序

    导语 这篇了解下快速排序。 快速排序 快速排序(英语:Quicksort),又称划分交换排序(partition-...

  • 快速排序的Python实现

    目录 快速排序的介绍 快速排序的Python实现 快速排序的介绍 快速排序(quick sort)的采用了分治的策...

  • Go-归并排序

    归并排序 算法实现 测试代码 排序结果 [-3 -1 2 3 4 8 8 9 10 15 20] 时间复杂度 O ...

  • 数据结构与算法 快速排序

    起因:快速排序,又称分区交换排序,简称快排,之前没有了解过,抽空学习一下。 快速排序 1 快速排序 快速排序的定义...

网友评论

      本文标题:Go-快速排序

      本文链接:https://www.haomeiwen.com/subject/fjwkectx.html