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

    递归:

    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])
  • 相关阅读:
    致 CODING 用户的元宵问候
    持续集成之理论篇
    基于 CODING 的 Spring Boot 持续集成项目
    使用 CODING 进行 Hexo 项目的持续集成
    使用 CODING 进行 Spring Boot 项目的集成
    三种前端模块化规范
    XSS和CSRF
    小问题填坑,关于obj.x和obj["x"]
    说一个闭包在实际开发中的应用
    关于return的分号自动插入问题
  • 原文地址:https://www.cnblogs.com/ff-gaofeng/p/11875410.html
Copyright © 2011-2022 走看看