排序
排序指将一组无序的记录序列调整为有序的记录序列。若不需要访问外存,则称为“内部排序”。若参加排序的记录数量很大,无法仅在内存中完成,则称为“外部排序”。
插入排序
遍历数组,将每个元素逐个插入到已排序的数组中

希尔排序
将数组按照一定步长拆分为相互间隔的多组数组,对每组数组进行插入排序

选择排序
遍历未排序的数组,选择其中的最小值,与已排序数组的后面一位元素交换

堆排序
将未排序数组变成堆,取出堆顶放入已排序数组

冒泡排序
每一次遍历数组时将最大的元素推向数组末端直至完成排序

鸡尾酒排序(双向冒泡排序)
左右同时遍历数组,将最大元素推向右端,最小元素推向左端

快速排序
选取一个数,把比它小的放在它的左边,比它大的放在它的左边!

归并排序
分而治之,把数组分成两半,先排左边一半,再排右边半,然后整理并合起来

基数排序
对所有数据的各个位数使用容器进行归类,从低到高,奇妙的排序方法

图
最短路径是计算某一节点到其他节点的最短距离,单一节点到其他节点的最短路径称为“单源最短路径”,任意节点到其他节点的最短路径称为“多源最短路径”。
A* 算法
通过启发函数引导算法的搜索方向,以求解两点间最短的有效路径
Dijkstra 算法
以起始点为中心向外层层扩展,直到扩展到终点为止
Floyd 算法
利用动态规划的思想寻找给定的加权图中多源点之间最短路径
Prim 算法
寻找与已生成的局部最小生成树所连通的路径权值最小的点,并将其加入最小生成树中
Kruskal 算法
将权值最小的边一一连接起来,成环则换下一条
字符串匹配
字符串匹配问题就是在一个大的字符串 String 中搜索某个字符串 Pattern 的所出现位置,包括所有出现的位置和最先/最后出现的位置。
KMP 算法
利用匹配失败后的信息,尽量减少模式串与主串的匹配次数

Sunday 算法
在匹配过程中,模式串发现不匹配时,算法能跳过尽可能多的字符以进行下一步的匹配

数据结构
为了解决问题,我们创造了各式各样的工具。但学习、进步的过程并不是要有问题的时候才来学些使用工具,而是在问题到来时,我们早已能够选择并使用恰当的工具来解决问题
栈
我们在寻找客栈时,数据同样寻求一个能够暂时栖息的地方,所以有了栈
队列
数据可比人类文明多了,只要你创造出队列,能破坏秩序的人就只有你自己
散列表
因为你在这个世界中独一无二,所以我才能在这片汪洋中一样就看到你
双端队列
当一辆无尽的列车直直地驶向镜子,在碰到镜子之后,它是穿过去了,还是离去了?
堆
身在谷底,依然希望一眼阅群山
优先队列
计算机世界里的数据也懂得老弱病残孕优先的道理呢
算术
算术是所有其他算法的根基,加减乘除,取反求模,取幂对偶,这才是真正的数字魔法
质数
孤独的质数循环又无期,在世界的尽头等待偶遇
求最大公约数
最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。