zoukankan      html  css  js  c++  java
  • 04 快速排序

    '''
    快速排序
    通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据
    都要小,然后再按此方法对这两部分数据分别进行快速排序,整个过程可以递归进行,以此达到整个数据
    变成有序序列
    '''
    import time
    start = time.time()
    def quick_sort(alist, start, end):
        # 递归的退出条件
        if start >= end:
            return
        # 选择开头第一个作为中间数
        mid = alist[start]
        # low为序列左边的由左向右移动的游标
        low = start
        # 反之
        high = end
        '''左右两边的指针都往中间移动,直到相遇'''
        while low < high:
            # 如果low 与high 未重合, high指向的元素不比基准元素小,则high向左移动
            while low < high and alist[high] >= mid:
                high -= 1
            # 将high指向的元素放到low位置上
            alist[low] = alist[high]
            while low < high and alist[low] < mid:
                low += 1
    
            alist[high] = alist[low]
        # 退出循环后,low与high重合,此时所指位置为基准元素的正确位置
        # 将基准元素放到该位置
        alist[low] = mid
    
        # 对基准元素左边的子序列进行快速排序
        quick_sort(alist, start, low-1)
        # 对基准的右边的子序列进行快速排序
        quick_sort(alist, low+1, end)
    
    if __name__ == '__main__':
        alist = [5,9,3,7,1,10,4,8,2,6]
        quick_sort(alist,0,len(alist)-1)
        print(alist)
        end = time.time()
        print(end-start)
    

      

  • 相关阅读:
    day10 基本数据类型(下)
    day09 作业
    day09 基本数据类型(中)
    day08 作业
    day8 for循环+基本数据类型(上)
    Python正课109 —— 前端 进阶8
    Python正课108 —— 前端 进阶7
    Python正课107 —— 前端 进阶6
    Python正课106 —— 前端 进阶 5
    Python正课105 —— 前端 进阶4
  • 原文地址:https://www.cnblogs.com/think-and-do/p/7495017.html
Copyright © 2011-2022 走看看