軟件環境:Python 3.7.0b4數組
工做原理:less
# 4.2 def count(list): if list == []: return 0 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] sub_max = max(list[1:]) return list[0] if list[0] > sub_max else sub_max
4.4:二分查找的基線條件是數組只包含一個元素。若是要查找的值與這個元素相同,就找到了!不然說明它不在數組中。遞歸條件爲 把數組分紅兩半,將其中一半丟棄,並對另外一半執行二分查找。ui
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])) # 需排序的數組