算法图解——学习笔记
文章目录
算法简介
算法
:一组完成任务的指令,任何片段都可以视为算法。
第一章 算法集合:
算法种类 | 定义 |
---|---|
二分法 | 一种查询方法,通过将查找特定序列的中间值,与查找的值进行比较后,如果相一致则停止查找。如果不一致,则继续继续按照二分法进行迭代查找的过程。 |
复杂度
:用O(操作数)
表示,不同的算法,操作数的表示方法不一样,例如:
复杂度 | 定义 |
---|---|
O(log n) | 对数复杂度,以二分法查找为代表。 |
O(n) | 线性复杂度,包括次序查找。 |
O(n log n) | 快速排序复杂度,以快速排序为代表。 |
O(n2) | 一种比较慢的排序方法,以选择排序为代表。 |
O(n!) | 最慢的排序计算,以商旅问题为代表。 |
第二章 选择排序
数组与链表
类别 | 定义 | 区别 | 插入|删除复杂度 | 读取复杂度 |
---|---|---|---|---|
数组 | 连续储存同一类别元素的一种数据结构 | 1.储存着元素以及此元素对应的地址 2.可以通过地址查找元素. 3.必须要占用连续的储存空间。 | O(n) | O(1) (顺序访问、随机访问) |
链表 | 非连续地褚翠同一类别元素的一种数据结构 | 1. 储存地址非连续; 2.储存着此元素以及下一个元素的地址; 3.只能够按照顺序查找,而不能选择查找。 | O(1) | O(n) (只能够顺序访问) |
排序算法
排序算法
:即将列表中的元素按照一定的要求生成新的顺序,其时间复杂度为O(n2)
import numpy as np
''' Author:ZFlyee '''
# 寻找最小值
def FindSmallest(arr):
SmallNum = arr[0]
SmallIdx = 0
for index, item in enumerate(arr):
if item < SmallNum:
SmallNum = item
SmallIdx = i
return SmallIdx
# 重新排序
def ReOrder(arr):
NewArr = []
for i in range(len(arr)):
Smallest = FindSmallest(arr)
NewArr.append(arr.pop(Smallest))
return NewArr