• Python 快速排序 思路详细讲解


    思路: 

      在这里概念得话不在说。 大概的思路就是, 首先用列表的第一个元素和其他元素去比较

      小于当前元素得放到列表的左边, 大于当前元素得放到列表得右边。

      然后依次递归就可以了。  

      有人肯定遇到, 值覆盖问该, 在这里说一下。 重点就是mid = list1[0]

      也就是每一次他都会将传入列表得第一个值赋值给一个变量, 这个时候

      就相当于在原列表留有一个空缺,而当列表得值进行 list1[low]=list1[high]

      操作时, 首先就会将这个想要移动得值放到这个空缺中进行填补,那这样

      就会多一个值, 也就是刚才得list1[high] ,那就是说这个值其实也就

      可以看成一个空缺位置, 等待下一次填补。 当最后得时候, 空缺得位置

      一定会在low 因为条件为 while low < high 即:不满足则不再执行,所以

      最后再将mid 放到这个位置之后, 就不会出现为什么值被覆盖了,还是没有

      改变原列表的现象。( 不懂得加qq, 注明来意即可。)

     

    代码;

    """
    author: zhao xian xin
    
    不积跬步无以至千里
    
    """
    
    """ 
    1. 以第一个元素为基准, 将数字分为 小于放到左边 大于放到右边
    """
    def kuaipai(list1,start,end):
        if start>=end:
            return
        low = start
        high = end
        mid = list1[low]
        print("start/low:", low, " ", "end/hight:",high," ", "mid:","mid")
        while low<high:
            while low<high and list1[high]>=mid:
                high-=1
            list1[low]=list1[high]
            print(list1, "高变低")
            while low<high and list1[low]<mid:
                low+=1
            list1[high]=list1[low]
            print(list1, "低边高")
        list1[low]=mid
        print(" ")
        print("-----------------------------")
        print(mid, "mid")
        print(list1, "list")
        print(start, low, end, "1111111111")
        print("-----------------------------")
        print(" ")
        kuaipai(list1,start,low-1)
        kuaipai(list1,low+1,end)
    if __name__ == '__main__':
    
        list1 = [8,7, 3, 6, 9, 10, 1]
        print(list1)
        print(" ")
        kuaipai(list1,0,len(list1)-1)
        print (list1)
    邮箱: 1090055252@qq.com
  • 相关阅读:
    transform.forward和vector3.forward
    游戏开发数值公式
    类的大小
    c#扩展方法
    C# 线程本地存储 调用上下文 逻辑调用上下文
    DbCommandInterceptor抓取EF执行时的SQL语句
    C# 关键字const与readonly的区别
    Swagger(webapi自动生成接口说明文档)
    log4net配置
    JavaScript代码优化指南
  • 原文地址:https://www.cnblogs.com/zhaoxianxin/p/13666152.html
Copyright © 2020-2023  润新知