• 用python实现快速排序


    # 快速排序
    def quick_sort(elems):
        quick_sort_rec(elems, 0, len(elems) - 1)
    
    
    def quick_sort_rec(elems, left, right):
        if left >= right:
            return None
        i = left
        j = right
        k = elems[i]
        while i < j:
            while i < j and elems[j] >= k:
                j -= 1
            if i < j:
                elems[i] = elems[j]
                i += 1
            while i < j and elems[i] <= k:
                i += 1
            if i < j:
                elems[j] = elems[i]
                j -= 1
        elems[i] = k
        quick_sort_rec(elems, left, i-1)
        quick_sort_rec(elems, i+1, right)
    

    **快速排序的思想: **

    1. 对当前待排序列,选区第一个元素记为k
    2. 在两边设立两个指针,先从右边向左遍历,如果找到比k小的,则将该元素赋值给i指向的位置,更新ij
    3. 再从左向右遍历,如果找到比k大的,则将该元素赋值给j 指向的位置,更新ij
    4. 当 i = j 的时候, 这一遍完成。将K赋值给当前i 指向的位置。
    5. 这样k已经放到了正确的位置。接下来递归排序k左边的序列,k右边的序列。
  • 相关阅读:
    标准I/O的缓冲
    Linux 的文件类型
    引用和指针
    信号-总结
    实时信号
    信号的其它特性
    信号处理器函数
    信号集 / 信号掩码(阻塞信号传递)
    显示信号描述
    发送信号
  • 原文地址:https://www.cnblogs.com/theodoric008/p/8033054.html
Copyright © 2020-2023  润新知