算法图解|选择排序和递归
一:选择排序,O(n2) 选择排序是一种灵巧的算法,但其速度不是很快 代码示例: # 选择排序:O(nxn) # 找出数组中最小的元素 def findsmallest(arr): # 假设小值为arr[0] smallest = arr[0] # 存储最小元素的索引 smallest_index = 0 # O(n) for i in range(1, len(arr)): if arr[i] < smallest: smallest = arr[i] smallest_index = i return smallest_index # 对数组进行选择排序 def selectionSort(arr): newArr = [] # O(nxn) for i in range(len(arr)): smallest_index = findsmallest(arr) # 将该索引的元素添加到newArr newArr.append(arr.pop(smallest_index)) return newArr print(selectionSort([1, 8, 6, 9, 10])) # [1, 6, 8, 9, 10] 二:递归 问题:有个盒子里有盒子,而盒子里的盒子又有盒子。钥匙就在某个盒子中。怎么能找到钥匙。 代码示例: 第一种方法: 详细检查盒子内的东西