python实现快速排序

时间:2020-04-25
本文章向大家介绍python实现快速排序,主要包括python实现快速排序使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

https://www.cnblogs.com/Hangingter/p/9589427.html

https://www.jianshu.com/p/2b2f1f79984e

# -*- coding: utf-8 -*-
# @Time : 2020/4/25 15:27
# @File : quick_sort.py
# @Author: Hero Liu
# 快速排序
# 一开始假定数组第一个元素是基准值
# 设定两个指针:左指针和右指针,分别指向数组的头部元素和尾部元素
# 1)然后从数组尾部往左扫描,如果元素值大于基准值,则右指针向左偏移
# 如果右指针指向的元素小于基准值,那么把这个元素值赋值给左指针
# 2)右边扫描完一次后开始从数组头部往右扫描,如果左指针指向的元素小于基准值,则左指针继续向右偏移
# 偏移后继续判断左指针指向的元素与基准值的大小,如果左指针指向的值大于基准值,那么把这个值赋值给右指针
# 3)重复上述1)、2)步骤,直到左右指针重合,此时指针左边的值即是所有小于基准值的元素
# 指针右边的值即是所有大于基准值的元素
# 4)再分别对指针左边的子序列和指针右边的子序列进行上述排序【递归】


def quick_sort(L):
    return q_sort(L, 0, len(L) - 1)


def q_sort(L, left, right):
    if left < right:
        pivot = partition(L, left, right)

        q_sort(L, left, pivot - 1)
        q_sort(L, pivot + 1, right)
    return L


def partition(L, left, right):
    pivotkey = L[left]

    while left < right:
        while left < right and L[right] >= pivotkey:
            right -= 1
        L[left] = L[right]
        while left < right and L[left] <= pivotkey:
            left += 1
        L[right] = L[left]

    L[left] = pivotkey
    return left


L = [5, 9, 1, 11, 6, 7, 2, 4]

print(quick_sort(L))

原文地址:https://www.cnblogs.com/come202011/p/12773433.html