• 快速排序


    递归:

    1、函数自己调用自己

    2、要有结束递归的条件

    def print_num(n):
        if n < 0:
            return
        print(n)
        print_num(n-1)
        print("******")
    
    
    print_num(3)
    
    执行结果:
    3
    2
    1
    0
    ****
    ****
    ****
    ****
    
    解释:
    """
    n=3:
    if n <=0: 不会触发
            return
    print(n)---》打印了3
    print_num(n-1)--》print_num(3-1)-print_num(2)--None
    print("*******")#被暂停了,需要等待print_num(2)执行结束
    才会执行。
    结束递归调用后,打印了一行星号
    return None,函数执行完毕了
    
    print_num(2)
    n=2:
    if n <=0: 不会触发
            return
    print(n)---》打印了2
    print_num(n-1)--》print_num(2-1)-print_num(1)--None
    print("*******")#被暂停了,需要等待print_num(1)执行结束
    才会执行。
    结束递归调用后,打印了一行星号
    
    
    print_num(1)
    n=1:
    if n <=0: 不会触发
            return
    print(n)---》打印了1
    print_num(n-1)--》print_num(1-1)-print_num(0)--None
    print("*******")#被暂停了,需要等待print_num(0)执行结束
    才会执行
    结束递归调用后,打印了一行星号
    
    print_num(0):
    n=0
    if n <=0: 被触发
            return
    print_num(n-1)--》被短路了,不会执行了
    print("*******")---》被短路了,不会执行了
    """
    

      

    def quickSort(nums):
        #结束递归的条件:list为空或只有一个元素
        if len(nums) <= 1:
            return nums
        pivot = nums[0]  #设置基准值,作为比较
        less = [i for i in nums[1:] if i <= pivot]  #比基准值小的元素放在左边
        greater = [i for i in nums[1:] if i >= pivot]  #比基准值大的元素放在右边
        print("less:",less)
        print("greater:",greater)
        return quickSort(less) + [pivot] + quickSort(greater)  #左边的元素,右边的元素组成的list用递归
    
    
    if __name__ == "__main__":
        quickSort([88,99,3,6,77,0,-100])
  • 相关阅读:
    Redis-命令-脚本
    Redis-命令-事务
    Redis-命令-发布订阅
    Redis-命令-HyperLogLog
    Redis-命令-有序集合(sorted set)
    Redis-命令-集合(Set)
    Redis-命令-列表(List)
    Python实例浅谈之三Python与C/C++相互调用
    python调用(运行)外部程序
    Sublime Text3 配置设置攻略
  • 原文地址:https://www.cnblogs.com/ff-gaofeng/p/11875410.html
Copyright © 2020-2023  润新知