2 选择排序
常见的 数组 和 链表操作的运行时间
:::warning
O(n) = 线性时间
O(1) = 常量时间
:::
| | 数组 | 链表 |
| —- | —- | —- |
| 读取 | O(1) | O(n) |
| 插入 | O(n) | O(1) |
| 删除 | O(n) | O(1) |

算法 — 快速排序
// 将数组元素按从小到大的顺序排列。先编写一个用于找出数组中最小元素的函数。def findSmallest(arr):smallest = arr[0] // 存储最小的值smallest_index = 0 // 存储最小元素的索引for i in range(1, len(arr)):if arr[i] < smallest:smallest = arr[i]smallest_index = ireturn smallest_index// 使用这个函数来编写选择排序算法def selectionSort(arr): // 对数组进行排序newArr = []for i in range(len(arr)):smallest = findSmallest(arr) // 找出数组中最小的元素newArr.append(arr.pop(smallest)) // 将其加入到新数组中return newArrprint selectionSort([5, 3, 6, 2, 10])
1 算法简介
算法 — 二分查找
函数binary_search接受一个有序数组和一个元素。如果指定的元素包含在数组中,这个函数将返回其位置。你将跟踪要在其中查找的数组部分——开始时为整个数组。def binary_search(list,item)://low-high是要查找的范围//low和high用于跟踪要在其中查找的列表部分low=0high=len(list)-1//只要范围没有缩小到只包含一个元素,就检查中间的元素while low <= high:mid = (low+high)/2guess= list[mid]//找到了元素if guess == item:return mid//猜的数字大了if guess > item:high =mid -1//猜的数字小了else:low = mid +1//没有指定的元素return Nonemy_list = [1, 3, 5, 7, 9]//索引从0开始,第二个位置的索引为1print binary_search(my_list, 3) # => 1//在Python中,None表示空,意味着没有找到指定的元素print binary_search(my_list, -1) # => None
