第一章 排序
-桶排序
-冒泡排序
-快速排序 最常用:两头开炮,使两边一边比中间某值小,一边比中间此值大,然后对两边再进行这种操作,迭代递归.
第二章 栈,队列,链表
队列 先进先出
只允许在队前删除,队后加入,FIFO原则
struct queue
{
int data [100];
int head;
int tail;
};
栈 先进后出
就羽毛球那种,先拿后面的
struct stack
{
int data[100]
int top;
};
链表 随便插
在链表中随便插,后面的排队
链表结构为一半存储数据,另一半存储下一个数据的地址
每个节点的结构:
struct node
{
int data;
struct node *next;
};
第三章 搜索策略
搜索可用枚举,但是效率贼低,最基本的就是深搜广搜,结合图的概念,算法实现中大概都会有一个OPEN队列和CLOSED队列
深度搜索
摁住一个,顺着它的子节点查到最下面.实现时用到迭代
广度搜索
平行搜索,一个一个看,可用于寻找最短路径
我也不知道第几章 一些概念
树和图
树其实就是不含回路的连通无向图,图是可以有回路的,但是树如果有n个节点,那它必然只有n-1条边,在一棵树中随意加一条边就会成为图.
二叉树
每个节点只能有两个子节点,左儿子和右儿子,二叉树中又有两种特殊的树,一种满二叉树,一种完全二叉树,满二叉树是完全二叉树的一种.这种树很神奇,可以用一个矩阵就将其完全表示.
堆
完全二叉树,当所有父节点都比子节点小时,叫做最小堆,相反最大堆,可快速找出堆中最大(小)值并将其替换,比排序更靠谱