阅读 86

算法图解 - chapter 2(读书笔记)

数组与链表

数组: 元素在内存中都是相连的

链表: 元素可存储在内存中任何地方,并不一定是相连的,每一个元素都存储了下一个元素的地址

数组擅长读取,链表擅长插入与删除(数组支持随机访问,而链表只能顺序访问)

数组 链表
读取 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
复制代码

选择排序时间复杂度:O(n^2)