数组与链表
数组: 元素在内存中都是相连的
链表: 元素可存储在内存中任何地方,并不一定是相连的,每一个元素都存储了下一个元素的地址
数组擅长读取,链表擅长插入与删除(数组支持随机访问,而链表只能顺序访问)
| 数组 | 链表 | |
|---|---|---|
| 读取 | 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 = i
return smallest_index
代码(添加到新数组):
def selectionSort(arr):
newArr = []
for i in range(len(arr)):
smallest = findSmallest(arr)
newArr.append(arr.pop(smallest))
return newArr
选择排序时间复杂度: