为什么会想着由非科班开始学python的数据结构与算法呢,起因是因为昨天看到了一道题,就是一个基于无向图(不知道是不是这么叫的)的那种,然后题里构建了一个,友谊传播模型,其实也可以称之为病毒传播模型,利用python的字典进行实现,这个时候我突然意识到,对于python 数据结构的不了解可能会给我带来很大的麻烦,于是从今天开始对python 数据结构与算法进行学习,使用的视频教材是B站 清华大学博士讲解Python数据结构与算法(完整版)全套100节
清华大学博士讲解Python数据结构与算法(完整版)全套100节_哔哩哔哩_bilibili
1. 算法
算法指一个计算过程、解决问题的方法;一种理解认为,程序=数据结构+算法,有输入有输出。
2. 时间复杂度
四代码哪组运行时间最短;用什么方式来体现算法运行的快慢
2.1 for 循环执行n次的话,n就是规模。
O(1) 大约 执行了一次,加减乘除打印等都叫做一个单位,时间消耗是1
O(n)这样一个循环,时间消耗定义为n
O(n)n方
有点类似于高数中的高阶无穷小,只写能够最大化影响的阶数;也就是当N方趋向于无穷大时,N就可以忽略不计了
比如,问你你晚上一般睡几个小时,你不会回答睡几个小时几分钟,而会回答几个小时,即会将其计算成最高阶的单位来进行计算
2.2 时间复杂度为log N
这个循环的时间复杂度 记为 O(log2 N)或 O(logn)
当你出现循环折半的时候,复杂度就是log N
3. 时间复杂度的小总结
O(1)<O(log N)<O(N)
1.这里不是比大小,是运算效率
2.每段代码运行1次的时间,设为单位1 也就是O(1)
3.O(logn)比O(n) 运行所需的N次单位时间 少了一半