从《图解算法》中所学到的

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*/

发布了15 篇原创文章 · 获赞 26 · 访问量 7676

猜你喜欢

转载自blog.csdn.net/Big_eyes123/article/details/102946806