一、算法的基本知识

1、什么是算法

计算或者解决问题的步骤, 算法和程序相比,程序是用编程语言写给计算机识别的,算法更多是以人类能理解的方式进行描述的。两者没有明显的界线

2、运行时间的计算方式

计算开始到结束共用了多少步

二、数据结构

1、什么是数据结构

数据存储于内存时,决定了数据的顺序和位置关系便是数据结构

2、链表

链表是数据结构之一,数据呈线性排列,数据的添加和删除都较为方便,就是访问比较耗费时间。查找的时间复杂度为O(n), 删除添加操作O(1)
循环链表:保存数量固定的最新数据通常会用
双向链表:两个指针指向前后数据,缺点:一会增加存储空间需求增加, 二是添加和删除数据需要改变更多的指针

3、数组

数组也是数据呈线性排列的一种数据结构,与链表不同的是,在数组中,访问数据十分简单,添加和删除数据比较耗费功夫,数组连续存储 访问O(1) 操作O(n)

4、栈

栈也是线性排列,操作只有一端进行,访问也只能访问顶端数据。访问中间数据,需要执行出栈后,移到顶端访问,遵循后进先出(Last In First Out)

5、队列

队列也是线性排列,与栈不同的是,添加删除在两端进行,遵循先进先出(First In First Out), 不过访问数据和栈一样,也需要出队操作,将目标元素放到首位才可以访问。

6、哈希表

哈希表存储的是由键(key)和值(value) 组成的数据,我们可以利用哈希函数快速访问数组中的目标数据,发生哈希冲突,就使用链表进行存储,注意数组要开合适的空间,太大会很多空余,太小线性查找会增多。

7、堆

堆是一种图的树形结构,用于实现‘优先队列’, 堆的特点,1、子节点大于父节点,顶部节点最小,顺序是从上到下,从左到右,新增数据一般添加到最下靠左位置

8、二叉查找树

二叉树找树(又叫二叉排序树,二叉搜索树) 是一种数据结构,采用了图的树形结构。二叉树两个性质:第一
个每个结点值均大于其左侧子树上任意的一个结点值, 第二个每个结点的值均小于其右侧子树上任意一个结点的值
结论: 查找最小值,从顶端开始向左子树末端查找,查找最大值,从顶端向右子树末端查找