算法图解笔记 第四章

第四章 快速排序

在这里插入图片描述
在这里插入图片描述

快速排序

def quicksort(array):
    if len(array) < 2:
        return array
    else:
        pivot = array[0]
        less = [ i for i in array[1:] if i <= pivot ]
        greater = [i for i in array[1:] if i > pivot ]

        return quicksort(less) + [pivot] + quicksort(greater)

print(quicksort([10, 5, 2, 3]))

小结

在这里插入图片描述

练习

在这里插入图片描述
个(rui)人(zhi)实()现

4.1

#def my_sum(arr):
	if len(arr) == 1:
		return [0]
	else:
		return arr[0] + my_sum(arr[1:]) 

空列表会出现问题
4.2

#def my_count(arr):
	if len(arr) == 1:
		return 1
	else:
		return 1 + my_count(arr[1:]) 

4.2使用len有问题,显示不出count作用
4.3

#def my_max(arr):
	newArr = arr
	if len(newArr ) == 1:
		return newArr[0]
	else:
		if newArr[0] > newArr[1] :
			del newArr[1]
		else:
			del newArr[0]
		return my_max(newArr)

参考答案
4.1

def sum(list):
	if list == []:
		return 0
	return list[0] + sum(list[1:])

4.2

def count(list):
	if list == []:
		return 0
	else:
		return 1 + count(list[1:])

4.3

def max(list):
	if len(list) == 2:
		return list[0] if list[0] > list[1] else list[1]
	else:
		sum_max = max(list[1:])
		return list[0] if list[0] > sub_max else sub_max

4.4
在这里插入图片描述

总结:
找出基线条件
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值