随笔分类 -  算法与数据结构

《算法导论》读书笔记(一)
摘要:《算法导论》读书笔记之第1章 算法在计算机中的作用 本章是本书的开篇,介绍了什么是算法,为什么要学习算法,算法在计算机中的地位及作用。 算法(algorithm)简单来说就是定义良好的计算机过程,它取一个或一组值作为输入,并产生出一个或一组值作为输出。即算法就是一系列的计算步骤,用来将输入数据转换成 阅读全文

posted @ 2018-02-25 12:20 AlanTu 阅读(2291) 评论(0) 推荐(0) 编辑

递归与尾递归总结
摘要:前言:今天上网看帖子的时候,看到关于尾递归的应用(http://bbs.csdn.net/topics/390215312),大脑中感觉这个词好像在哪里见过,但是又想不起来具体是怎么回事。如是乎,在网上搜了一下,顿时豁然开朗,知道尾递归是怎么回事了。下面就递归与尾递归进行总结,以方便日后在工作中使用 阅读全文

posted @ 2018-02-24 15:07 AlanTu 阅读(9016) 评论(0) 推荐(0) 编辑

深度解析(一六)Floyd算法
摘要:Floyd算法(一)之 C语言详解 本章介绍弗洛伊德算法。和以往一样,本文会先对弗洛伊德算法的理论论知识进行介绍,然后给出C语言的实现。后续再分别给出C++和Java版本的实现。 目录 1. 弗洛伊德算法介绍 2. 弗洛伊德算法图解 3. 弗洛伊德算法的代码说明 4. 弗洛伊德算法的源码 转载请注明 阅读全文

posted @ 2018-02-24 14:37 AlanTu 阅读(555) 评论(0) 推荐(0) 编辑

深度解析(十五)哈夫曼树
摘要:哈夫曼树(一)之 C语言详解 本章介绍哈夫曼树。和以往一样,本文会先对哈夫曼树的理论知识进行简单介绍,然后给出C语言的实现。后续再分别给出C++和Java版本的实现;实现的语言虽不同,但是原理如出一辙,选择其中之一进行了解即可。若文章有错误或不足的地方,请帮忙指出! 目录 1. 哈夫曼树的介绍 2. 阅读全文

posted @ 2018-02-24 14:18 AlanTu 阅读(1892) 评论(0) 推荐(0) 编辑

常用排序算法(九)基数排序
摘要:基数排序 概要 本章介绍排序算法中的基数排序。内容包括:1. 基数排序介绍2. 基数排序图文说明3. 基数排序实现3.1 基数排序C实现3.2 基数排序C++实现3.3 基数排序Java实现 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3603669. 阅读全文

posted @ 2018-02-24 14:07 AlanTu 阅读(324) 评论(0) 推荐(0) 编辑

常用排序算法(八)桶排序
摘要:桶排序 概要 本章介绍排序算法中的桶排序。内容包括:1. 桶排序介绍2. 桶排序图文说明3. 桶排序实现3.1 桶排序C实现3.2 桶排序C++实现3.3 桶排序Java实现 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3602737.html 更多排 阅读全文

posted @ 2018-02-24 14:05 AlanTu 阅读(292) 评论(0) 推荐(0) 编辑

常用排序算法(七)归并排序
摘要:归并排序 概要 本章介绍排序算法中的归并排序。内容包括:1. 归并排序介绍2. 归并排序图文说明3. 归并排序的时间复杂度和稳定性4. 归并排序实现4.1 归并排序C实现4.2 归并排序C++实现4.3 归并排序Java实现 转载请注明出处:http://www.cnblogs.com/skywan 阅读全文

posted @ 2018-02-24 14:03 AlanTu 阅读(356) 评论(0) 推荐(0) 编辑

常用排序算法(六)堆排序
摘要:堆排序 概要 本章介绍排序算法中的堆排序。 目录1. 堆排序介绍2. 堆排序图文说明3. 堆排序的时间复杂度和稳定性4. 堆排序实现4.1 堆排序C实现4.2 堆排序C++实现4.3 堆排序Java实现 转载请注明出处:http://www.cnblogs.com/skywang12345/p/36 阅读全文

posted @ 2018-02-24 14:01 AlanTu 阅读(538) 评论(0) 推荐(0) 编辑

常用排序算法(五)选择排序
摘要:选择排序 概要 本章介绍排序算法中的选择排序。 目录1. 选择排序介绍2. 选择排序图文说明3. 选择排序的时间复杂度和稳定性4. 选择排序实现4.1 选择排序C实现4.2 选择排序C++实现4.3 选择排序Java实现 转载请注明出处:http://www.cnblogs.com/skywang1 阅读全文

posted @ 2018-02-24 13:58 AlanTu 阅读(139) 评论(0) 推荐(0) 编辑

常用排序算法(四)希尔排序
摘要:希尔排序 概要 本章介绍排序算法中的希尔排序。内容包括:1. 希尔排序介绍2. 希尔排序图文说明3. 希尔排序的时间复杂度和稳定性4. 希尔排序实现4.1 希尔排序C实现4.2 希尔排序C++实现4.3 希尔排序Java实现 转载请注明出处:http://www.cnblogs.com/skywan 阅读全文

posted @ 2018-02-24 13:48 AlanTu 阅读(275) 评论(0) 推荐(0) 编辑

常用排序算法(三)直接插入排序
摘要:直接插入排序 概要 本章介绍排序算法中的直接插入排序。内容包括:1. 直接插入排序介绍2. 直接插入排序图文说明3. 直接插入排序的时间复杂度和稳定性4. 直接插入排序实现4.1 直接插入排序C实现4.2 直接插入排序C++实现4.3 直接插入排序Java实现 转载请注明出处:http://www. 阅读全文

posted @ 2018-02-24 13:40 AlanTu 阅读(437) 评论(0) 推荐(0) 编辑

常用排序算法(二)快速排序
摘要:快速排序 概要 本章介绍排序算法中的快速排序。 目录1. 快速排序介绍2. 快速排序图文说明3. 快速排序的时间复杂度和稳定性4. 快速排序实现4.1 快速排序C实现4.2 快速排序C++实现4.3 快速排序Java实现 转载请注明出处:http://www.cnblogs.com/skywang1 阅读全文

posted @ 2018-02-24 13:22 AlanTu 阅读(213) 评论(0) 推荐(0) 编辑

常用排序算法(一)冒泡排序
摘要:冒泡排序 概要 本章介绍排序算法中的冒泡排序,重点讲解冒泡排序的思想。 目录1. 冒泡排序介绍2. 冒泡排序图文说明3. 冒泡排序的时间复杂度和稳定性4. 冒泡排序实现4.1 冒泡排序C实现4.2 冒泡排序C++实现4.3 冒泡排序Java实现 转载请注明出处:http://www.cnblogs. 阅读全文

posted @ 2018-02-24 13:20 AlanTu 阅读(484) 评论(0) 推荐(0) 编辑

Linux内核中双向链表的经典实现
摘要:Linux内核中双向链表的经典实现 概要 前面一章"介绍双向链表并给出了C/C++/Java三种实现",本章继续对双向链表进行探讨,介绍的内容是Linux内核中双向链表的经典实现和用法。其中,也会涉及到Linux内核中非常常用的两个经典宏定义offsetof和container_of。内容包括:1. 阅读全文

posted @ 2018-02-24 12:38 AlanTu 阅读(1487) 评论(0) 推荐(0) 编辑

回溯法 - 数据结构与算法
摘要:1.回溯法算法思想: 定义: 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 1、回溯法适用:有许多问题,当需要找出它的解 阅读全文

posted @ 2018-02-24 11:07 AlanTu 阅读(2126) 评论(0) 推荐(0) 编辑

迪杰斯特拉Dijkstra算法介绍
摘要:迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。 基本思想 通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算)。 此外,引进两个集合S和U。S 阅读全文

posted @ 2018-02-24 11:06 AlanTu 阅读(1537) 评论(0) 推荐(0) 编辑

Kruskal算法 - C语言详解
摘要:最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树。 例如,对于如上图G4所示的连通网可以有多棵权值总和不相同的生成树。 克鲁斯卡尔算法介绍 克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成 阅读全文

posted @ 2018-02-24 11:05 AlanTu 阅读(1084) 评论(0) 推荐(0) 编辑

普里姆Prim算法介绍
摘要:普里姆(Prim)算法,和克鲁斯卡尔算法一样,是用来求加权连通图的最小生成树的算法。 基本思想 对于图G而言,V是所有顶点的集合;现在,设置两个新的集合U和T,其中U用于存放G的最小生成树中的顶点,T存放G的最小生成树中的边。 从所有uЄU,vЄ(V-U) (V-U表示出去U的所有顶点)的边中选取权 阅读全文

posted @ 2018-02-24 11:05 AlanTu 阅读(978) 评论(0) 推荐(0) 编辑

拓扑排序介绍
摘要:拓扑排序介绍 拓扑排序(Topological Order)是指,将一个有向无环图(Directed Acyclic Graph简称DAG)进行排序进而得到一个有序的线性序列。 这样说,可能理解起来比较抽象。下面通过简单的例子进行说明! 例如,一个项目包括A、B、C、D四个子部分来完成,并且A依赖于 阅读全文

posted @ 2018-02-24 11:03 AlanTu 阅读(566) 评论(0) 推荐(0) 编辑

深度优先搜索、广度优先搜索
摘要:深度优先搜索的图文介绍 1. 深度优先搜索介绍 图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通 阅读全文

posted @ 2018-02-24 11:02 AlanTu 阅读(290) 评论(0) 推荐(0) 编辑

导航