美文网首页
算法2:排序

算法2:排序

作者: HYIndex | 来源:发表于2021-03-19 23:27 被阅读0次

2.1 快速排序

题目描述:实现快速排序

思路:采用交换法,选第一个数为基准数pivot,在pl <= pr的前提下,指针pl从基准数+1的位置向右走,直到碰到比pivot大的数,指针pr从最右边向左走,直到碰到比pivot小的数,交换arr[pl], arr[pr],循环结束时pr = pl - 1,将基准数和pr交换。递归调用对基准数位置两边的区间调整。

示例代码:

func partition(arr []int, left, right int) int {
    pivot := arr[left]
    pl, pr := left + 1, right
    for pl <= pr {
        for ; pl <= pr && arr[pl] < pivot; pl++ {}
        for ; pl <= pr && arr[pr] > pivot; pr-- {}
        if pl < pr {
            arr[pl], arr[pr] = arr[pr], arr[pl]
        }
    }
    // 结束时pr = pl -1
    arr[left], arr[pr] = arr[pr], arr[left]
    return pr
}

func recursive(arr []int, left, right int)  {
    if left >= right {
        return
    }
    mid := partition(arr, left, right)
    recursive(arr, left, mid - 1)
    recursive(arr, mid + 1, right)
}

func QuickSort(arr []int) []int {
    recursive(arr, 0, len(arr) - 1)
    return arr
}

相关文章

  • 线性排序

    桶排序、计数排序、基数排序 一、线性排序算法介绍 1.线性排序算法包括桶排序、计数排序、基数排序。2.线性排序算法...

  • 算法-排序算法总结

    排序类型总结 1 排序算法基础实现 2 排序算法应用 2.1 基础排序 2.2 计数排序应用 2.3 快排应用 2...

  • 排序算法总结

    n^2的算法:冒泡排序,选择排序,插入排序n^1.3的算法:希尔排序nlogn的算法:归并排序、快速排序 泛型的使...

  • python 八大算法

    排序算法总结 排序算法 平均时间复杂度 冒泡排序O(n2) 选择排序O(n2) 插入排序O(n2) 希尔排序O(n...

  • 程序员应该掌握哪些算法

    程序员必须掌握的常用算法,主要包括以下内容: 算法: 1、排序算法:快速排序、归并排序、计数排序 2、搜索算法:回...

  • Chapter 2 Foundation of Algorith

    Chapter 2 插入排序 线性查找 选择算法 归并排序算法 二分查找算法 冒泡排序 插入排序 循环不...

  • 常用排序算法实现

    1、常见排序算法大致有以下几种:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序2、各种排序算法...

  • 排序算法总结

    排序算法总结 分类编程技术 排序算法平均时间复杂度 冒泡排序O(n2) 选择排序O(n2) 插入排序O(n2) 希...

  • LeetCode-排序算法

    LeetCode-排序算法 时间复杂度 排序算法平均时间复杂度冒泡排序O(n2)选择排序O(n2)插入排序O(n2...

  • 11|线性排序:如何根据年龄给100万用户数据排序?

    一、线性排序算法介绍 1.线性排序算法包括桶排序、计数排序、基数排序。2.线性排序算法的时间复杂度为O(n)。3....

网友评论

      本文标题:算法2:排序

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