
数据结构和算法
matao_jack
没有什么可以打败我,除非是我自己不想成功
展开
-
弗洛伊德(Floyd)算法
1,.弗洛伊德(Floyd)算法介绍和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名弗洛伊德算法(Floyd)计算图中各个顶点之间的最短路径迪杰斯特拉算法用于计算图中某一个顶点到其他顶点的最短路径。弗洛伊德算法 VS 迪杰斯特拉算法:迪杰斯...原创 2019-11-09 21:28:13 · 383 阅读 · 0 评论 -
迪杰斯特拉算法详解
迪杰斯特拉(Dijkstra)算法介绍迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个结点到其他结点的最短路径。 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。应用场景-最短路径问题看一个应用场景和问题:战争时期,胜利乡有7个村庄(A, B, C, D, E, F, G) ,现在有六个邮差,从G点出发,需要分别把邮件分别送到 A, B...原创 2019-11-08 17:40:01 · 1038 阅读 · 0 评论 -
KMP算法(字符串匹配)
对于KMP算法来言,我自己感觉文字介绍,方法理解起来相对于代码算是简单的,KMP算法介绍1)KMP是一个解决模式串在文本串是否出现过,如果出现过,最早出现的位置的经典算法2)Knuth-Morris-Pratt 字符串查找算法,简称为 “KMP算法”,常用于在一个文本串S内查找一个模式串P 的出现位置,这个算法由Donald Knuth、Vaughan Pratt、James H. Morr...原创 2019-11-06 09:35:59 · 399 阅读 · 0 评论 -
查找算法以及代码实现
1.线性查找算法特别简单的算法,就是遍历数组,一一比较,返回坐标代码实现:public static void main(String[] args) { int arr[] = { 1, 9, 11, -1, 34, 89 };// 没有顺序的数组 int index = seqSearch(arr, -11); if(index == -1) { System.out....原创 2019-11-04 11:12:40 · 770 阅读 · 0 评论 -
链表和双向链表介绍和代码实现
链表(Linked List)链表是有序的列表,但是它在内存中是存储如下小结:1)链表是以节点的方式来存储,是链式存储2)每个节点包含 data 域, next 域:指向下一个节点.3)如图:发现链表的各个节点不一定是连续存储.4)链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定5)链表存储位置和顺序都是不一定的,头结点也不是一定在最前端//定义SingleLinke...原创 2019-11-02 11:19:35 · 404 阅读 · 0 评论 -
稀疏数组和队列以及代码实现
1.稀疏数组基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:1)记录数组一共有几行几列,有多少个不同的值2)把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模说明:应用实例1)使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等)2)把稀疏数组存盘,并且可以从新恢复原来的二维数组数3)整...原创 2019-10-23 21:06:31 · 208 阅读 · 0 评论 -
常见排序算法原理和实现(二)
5.快速排序快速排序法介绍:快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列示意图:代码实现:/** * */package com.matao.sort;im...原创 2019-10-22 19:54:57 · 241 阅读 · 0 评论 -
常见排序算法原理和实现(一)
排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。排序的分类:内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。1.冒泡排序基本介绍:冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始)...原创 2019-10-21 19:23:27 · 234 阅读 · 0 评论