美文网首页【打基础】算法集
【排序方法】快速排序

【排序方法】快速排序

作者: 拜仁的月饼 | 来源:发表于2019-08-18 18:49 被阅读0次

思想

快速是一个基于“分而治之”思想的排序算法。“分治”的思想体现在:在数组中选定一个靶点(pivot),然后围绕这个靶点对数据进行分割(partition),比靶点小的分到左边,比靶点大的分到右边。每次分分分,最后再按大小排序,即可排好。

代码实现

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

def partition(ar, l, h):
    if h < l: # 以防输错。输错就交换一下
        h, l = l, h
    
    pivot = ar[h]
    i = l - 1
    
    for j in range(l, h):
        if ar[j] <= pivot:
            i += 1
            ar[i], ar[j] = ar[j], ar[i]
    
    ar[h], ar[i + 1] = ar[i + 1], ar[h]
    
    return i + 1

def quicksort(ar, l, h): # 执行快速排序的过程
    if l < h:
        pi = partition(ar, l, h)
        quicksort(ar, l, (pi - 1))
        quicksort(ar, (pi + 1), h)

if __name__ == "__main__":
    a = [1, 7, 2, 88, 3, 6, 12]
    len_ = len(a)
    quicksort(a, 0, (len(a) - 1))
    for i in range(len_):
        print("%d"%a[i])

References

  1. https://www.geeksforgeeks.org/quick-sort/

相关文章

  • 数组排序 冒泡排序 选择排序 插入排序 快速排序

    冒泡排序 选择排序 插入排序 快速排序 系统方法

  • 排序算法

    冒泡排序 选择排序 插入排序 归并排序 快速排序 数组内置方法

  • 实现几种常见排序方法

    Java实现几种常见排序方法 日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还...

  • 【恋上数据结构与算法二】(一)排序(Sorting)

    排序方法 冒泡排序 选择排序 堆排序 插入排序 归并排序 快速排序 希尔排序 计数排序 基数排序 桶排序 初识排序...

  • 桶排序与力扣(LeetCode) -164 最大间距

    在我的博客冒泡排序、插入排序、快速排序、堆排序、归并排序总结中介绍了几种经典的排序方法,其中快速排序、堆排序和归并...

  • 冒泡排序、插入排序、选择排序

    一、排序方法与复杂度归类 几种最经典、最常用的排序方法:冒泡排序、插入排序、选择排序、快速排序、归并排序、计数排序...

  • 排序(上)

    排序方法与复杂度归类 (1)几种最经典、最常用的排序方法:冒泡排序、插入排序、选择排序、快速排序、归并排序、计数排...

  • 快速排序算法(OC实现)

    1.快速排序的意义:快速排序是一种优雅的排序算法,快速排序使用分而治之的策略。(一种递归式问题解决方法),快速排序...

  • 快速排序

    描述 快速排序算是用得比较多的排序算法,很多库的排序方法都是用的快速排序,快速排序的平均时间复杂度为O(NlogN...

  • 2018-07-03

    排序算法之快速排序 快速排序算法由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加...

网友评论

    本文标题:【排序方法】快速排序

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