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])
  • 相关阅读:
    hexo博客搭建
    HDFS基本命令
    hadoop简单排序
    HBase实验
    linux版python升级依赖项问题
    hadoop大数据生态安装
    linux-anoconda更换镜像
    [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:排序、筛选和分页
    [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:实现基本的CRUD功能
    [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:建立一个EF数据模型
  • 原文地址:https://www.cnblogs.com/ff-gaofeng/p/11875410.html
Copyright © 2011-2022 走看看