快速排序
Posted ff-gaofeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序相关的知识,希望对你有一定的参考价值。
递归:
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])
以上是关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章