概念:
数据结构
Data Structure
存储数据的不同方式
计算机作为一门工程学科,容易理解,做出东西来,比死板的背概念要重要的多。
什么是算法?
针对同一个问题,不同的解决方法
比如从1到100求和,可以从1到100累加,也可以1+100 乘以50
扫描二维码关注公众号,回复:
5575151 查看本文章
如何测算算法的优劣?
时间测算
完成同样的结果,用的时间越短,算法越好。
空间测算
如果解决问题需要额外的空间,也就是不包括存储数据的空间,占的空间越少,这个算法越好。
算法耗时的通常计算方法。
在学术上如何来表述一个算法的优劣呢?
Big O
用来标记时间的复杂程度
什么是时间复杂度?
计算机解决一个问题,执行的时间,随着问题规模的扩大,时间是怎么变化的。
访问数组某个位置的值,随着规模的扩大,所用的时间是怎么变化的。
由于数组访问某个位置,只需要计算偏移量就行了,查询第10个和查询第1000个,都是计算偏移量需要花的时间。
我们把这种问题的时间复杂度 表示为O(1)
计算时间复杂度的时候,我们只计算随着规模的扩大,所需要的时间,不考虑必要的操作,比如循环,赋初始值。
访问链表某个位置的值
如果我们访问链表的第一个,那么时间复杂度还是O(1)
但是我们说时间复杂度,一般是讲“最差”的情况
如果访问第一个需要1s,那么访问第10个需要10s,我们把这种问题的时间复杂度表示为O(n)
就是说,当问题的规模扩大的时候,消耗的时间是线性的扩大。
时间复杂度就是 时间针对于问题规模的变化,而进行变化的规律
求数组平均数的时间复杂度
算法是先累加求和,然后除以数组长度
随着数组的增大,需要累加的数会增多,所以时间复杂度为O(n)
作业
下一节:
排序算法
(课程在马士兵微博)