关闭

字符串

(1)字符与字符串    字符:一般被认为是字母、数字、符号和字。字母就是A、B、C、a、b、c等,而数字 1,2,3等,字可能是中文和英文字等。   字符串是有字符组成的。一般编程语言中用String类型来表示。在java 中String的实现通过char数组实现的。    (2)字符串的全排列: 比如给定一个字符串是xyz,则其全排列是xyz, xzy, yxz,yzx,zxy,zyx...
阅读(169) 评论(0)

数据结构与算法系列

最近抽空整理了"数据结构和算法"的相关文章。在整理过程中, 对于每种数据结构和算法分别给出"C"、"C++"和"Java"这三种语言的实现;实现语言虽不同,但原理如出一辙。因此,读者在了解和学习的过程中,择其一即可!     C C++ Java 线性结构 1. 数组、单链表和双链表 数组、单链表和双链表 数组、单...
阅读(143) 评论(0)

最短路径-Floyd算法

在最短路径的求解过程,无非中有两种可能:         (1)一种是能够直接到达,是最短路径;        (2)另一种是需要一些顶点才能到达,也是最短路径。        Floyd算法的伪代码如下:              Floyd算法的具体实现代码如下:           最短路径算法总结:...
阅读(410) 评论(0)

最短路径(邻接表)-Dijkstra算法

最短路径(邻接表)-Dijkstra算法:生成的图采用邻接表的存储方式。        具体的实现代码如下: package com.threeTop.www; import java.util.Hashtable; import java.util.Stack; /** * 邻接表存储方式的Dijkstra算法 * @author wjgs * */ public class ...
阅读(599) 评论(0)

最短路径(邻接矩阵)-Dijkstra算法

Dijkstra算法又叫作迪杰斯特拉算法,是利用"贪心法"(在对问题进行求解时,总是做出在当前看来最好的选择策略)设计算法的一个成功范例。         适用条件:带权无环和无负权值        举个栗子:...
阅读(584) 评论(0)

图的邻接表存储下的广度优先遍历

图的邻接表存储下的广度优先遍历:需要借助队列实现.     图的邻接表存储下的广度优先遍历实现代码如下: /** * 邻接表广度优先遍历 * */ public void breadFirstTravel() { System.out.println("邻接表广度优先遍历为:"); //初始化队列 Queue queue=new LinkedList(); /...
阅读(329) 评论(0)

图的邻接矩阵存储下的广度优先遍历

图的邻接矩阵存储下的广度优先遍历:就像树的按层次遍历,需要借助队列实现。     图的邻接矩阵存储下的广度优先遍历的实现代码如下: /*** * * 邻接矩阵广度优先遍历 * */ public void breadthFirstTravel() { System.out.println("邻接矩阵的广度优先遍历:"); //初始化队列,LinkedList实现...
阅读(198) 评论(0)

图的邻接表存储下的深度优先遍历

在图的邻接表的存储下进行的深度优先遍历:需要用到哈希表来辅助。    具体的实现代码如下: package com.threeTop.www; /** * 邻接表节点的定义 * @author wjgs * */ public class ListGraphNode { //增加索引 int index; //值 int value; //指向下一个节点的指针(...
阅读(201) 评论(0)

图的邻接矩阵存储下的深度优先遍历

深度优先遍历(DFS): 借助栈进行遍历,深度优先遍历的序列不是唯一的,邻接矩阵存储的时间复杂度为O(n*n),邻接表的存储的时间复杂度为O(n+e).       邻接矩阵的深度优先遍历的实现代码如下: package com.threeTop.www; import java.util.Stack; public class MatrixGraph { //通过下标映射元素值 p...
阅读(395) 评论(0)

图的邻接表存储

邻接表表示法和散列表类似,也是用一个数组,每个数组元素有个链表。其适用条件(边数不多):图的边数      图邻接表存储的实现代码如下: package com.threeTop.www; /** * 邻接表节点的定义 * @author wjgs * */ public class ListGraphNode { //值 int value; //指向下一个节点的指针...
阅读(248) 评论(0)

图的邻接矩阵存储

一般的图会使用二元组的方式来描述,G=(V,E) ,其中V 叫作顶点集,E叫作边集。        图分为: (1)无向图 (2)有向图         图的表示和存储方式:  (1)邻接矩阵表示法 (2)邻接表表示法        邻接矩阵:存储为二维数组...
阅读(156) 评论(0)

关键路径C++实现

AOE网:在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动的持续时间,称这样的有向图叫做边表示活动的网,简称AOE网。AOE网中没有入边的顶点称为始点(或源点),没有出边的顶点称为终点(或汇点)。 AOE网的性质: ⑴ 只有在某顶点所代表的事件发生后,从该顶点出发的各活动才能开始; ⑵ 只有在进入某顶点的各活动都结束,该顶点所代表的事件才能发生。...
阅读(333) 评论(0)

红黑树

红黑树:本质是一棵二叉查找树,其插入、删除、查找操作的时间复杂度为O(logn).    红黑树的特征:    (1)每个节点都有颜色,要么是红色,要么是黑色;    (2)根节点是黑色的    (3)所有的叶节点都是黑色的,并且所有的叶节点都为空;    (4)如果一个节点的红色的,那么它的两个孩子节点一定是黑色的    (5)任意节点到叶节点NIL指针的每一条路径都包含相同数目的黑...
阅读(334) 评论(0)

堆排序

堆排序就是对数组进行初始化堆、依次插入元素和删除元素的操作。堆排序很适合对大量的数据进行排序,总的时间复杂度为O(nlogn).       堆排序的实现代码如下: /** * 堆排序的实现 * */ public void sort() { if(isEmpty()) { throw new Run...
阅读(118) 评论(0)

堆是一种特殊的数据结构,是一种特殊形式的完全二叉树。       堆分为:(1)大顶堆,大顶堆中每个节点的值都不大于其父节点的值                   (2)小顶堆,小顶堆中每个节点的值都不小于其父节点的值       堆分为二项式堆、斐波那契堆、二叉堆(完全二叉堆)。       堆本身就是完全二叉树,可以使用一个一维数组,0位置用来存储元素的个数,1-n用来存储元素。...
阅读(134) 评论(0)
62条 共5页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:170729次
    • 积分:5290
    • 等级:
    • 排名:第5436名
    • 原创:221篇
    • 转载:177篇
    • 译文:120篇
    • 评论:34条
    个人博客
    最新评论