第四章 快速排序
快速排序
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
总结:
找出基线条件