《啊哈!算法》小总结

这几天断断续续看完了《啊哈!算法》,做点小复笔记


冒泡排序:比较相邻的元素,如果顺序不一样就将他们调换顺序,直到完成排序

快速排序:选择基准数,头尾指针往中间靠拢,如果两个指针指向的数字与基准数的比较有问题,则将其交换(跳跃式的交换)。然后再通过二分的思想递归进行这样的步骤,直到排序完成。


栈:先进后出

队列:先进先出

链表:方便插入、删除节点


深度优先搜索:关键在于解决当前该如何做,如果当前有没有被访问过的点,则访问该点,递归进行此步骤。若没有需要访问的点,则回到上一个点访问下一个点。直到所有点都被访问。

广度优先搜索:访问当前点的所有相邻的点(加入队列),将他们加入队列,然后再递归进行此操作,直到完成所有点。

图遍历中,广度优先搜索更加适用于所有边权值相同的情况。

图的邻接矩阵表示法:使用二维数组来储存图。


Floyd-Warshall:每个顶点有可能使另外两个定点之间的路程变短。

每经过一个点,更新数组中的距离。


Dijkstra(单源最短路):

从选中的点开始,选出离当前点最近的点,对最近点的所有出边进行“松弛”(与现有的距离进行比较,如果比现有的距离小则更新距离)。

可以使用邻接表进行优化(当边数M远小于点数N的平方时)


树:不包含回路的连同无向图

n个结点有n-1条边,任意两点有且只有一条路径联通。

二叉树:每个节点最多有两个子节点。

满二叉树:所有的叶节点都有同样的深度,深度为h且有2的h次方-1个节点

完全二叉树:高度为h的二叉树,第h层从右向左连续缺若干节点。父节点编号为k,左子节点为2k,右为2k+1。子节点编号为x(无论左右),父节点为x/2(取整)。

堆:所有父节点都比子节点大或者小的完全二叉树。

***插入、删除节点的步骤


并查集(不相交集数据结构):靠左+擒贼先擒王原则,将孤立的点合并为树。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 5,175评论 0 12
  • 第一章 绪论 什么是数据结构? 数据结构的定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 第二章...
    SeanCheney阅读 5,828评论 0 19
  • 基于树实现的数据结构,具有两个核心特征: 逻辑结构:数据元素之间具有层次关系; 数据运算:操作方法具有Log级的平...
    yhthu阅读 4,332评论 1 5
  • 明艳似春,暗霜似冬,恰是西风蔓延。长亭路外相望,隔山幕雪难辨。天山路远,阿勒斯泰无春暖。故人长忆塞外时,落下三瀑泪...
    沧海泊予帆阅读 296评论 0 0
  • 老公 现在是2015年5月14日 我才大一 不知道你什么时候才能找到我阿 你一定要快一点 早一点 再早一点出现 ...
    我还没见过你阅读 321评论 1 2