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])
  • 相关阅读:
    vue-d2admin-axios异步请求登录,先对比一下Jquery ajax, Axios, Fetch区别
    beego 前后端分离登录验证
    Beego没gin配置静态页面方便
    beego-vue URL重定向(beego和vue前后端分离开发,beego承载vue前端分离页面部署)
    Go程序员面试算法宝典-读后感2-链表
    Go程序员面试算法宝典-读后感1
    bee api new
    golang-结构体的使用
    golang-笔记2
    golang-笔记1
  • 原文地址:https://www.cnblogs.com/ff-gaofeng/p/11875410.html
Copyright © 2011-2022 走看看