1.算法是一组完成任务的指令,任何代码片段都可以视为算法。
2.二分查找是一种算法(从中间开始查找)。需要注意的是:仅当输入列表是有序的时候,二分查找才可以。
3.简单查找:从头开始到末尾一个一个的查找。
4.大0表示法,表示算法的速度有多快。例如,需要执行n次操作,用大O表示法,运行时间为O (n)。注意:单位并不是s,大0表示法让你可以比较其操作数,指出了算法运行时间的增速。
5.常见的大O运行时间:(从快到慢)
- O(logn),也叫对数时间,这样的算法包括二分查找。
- O(n),也叫线性时间,这样的算法包括简单查找。
- O(n * logn),这样的算法包括快速排序(一种速度较快的排序算法)。
- O(n2),这样的算法包括选择排序(一种速度较慢的排序算法)。
- O(n!), 这样的算法包括旅行商问题的解决方案(一种非常慢的算法)。
书中所说的一点启示(可能现在有点模糊,等两天就明白了,不要急)
- 算法的速度指的并非时间,而是操作数的增速。
- 谈论算法的速度时,我们说的是随着输入的增加,其运行时间将以什么样的速度增加。
特别的“旅行商”的问题。难题之一。
6.(计算机)存储多项数据时,有两种基本方式:数组和链表,但并非适用所有情况。
7.数组,是有序的元素序列,用于储存多个相同类型数据的集合。
特点:
- 数组是相同数据类型的元素的集合。(js中数据类型可以不相同,js弱语言类型决定。)
- 数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。
- 数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。
8.链表,是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
9.数组和链表优缺点
数组(优点):
- 随机访问性强
- 查找速度快
数组(缺点):
- 插入和删除效率低
- 数组大小固定,不能动态拓展,所以内存空间要求高,必须有足够的连续内存空间(还非常有可能浪费内存空间)。
链表(优点):
- 插入和删除速度快
- 内存利用率高,不会浪费内存
- 大小没有固定,拓展很灵活。
链表(缺点):
- 不能随机查找,必须从第一个开始遍历,查找效率低
10.一般来说编程语言都是从0开始对数组元素进行编号,no1,另外元素位置也不叫位置,叫索引。(xx元素索引于n处)。
/*20191107*/