![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
周孙静
这个作者很懒,什么都没留下…
展开
-
栈和队列的java实现
栈和队列的java实现原创 2016-02-16 13:43:21 · 338 阅读 · 0 评论 -
快速排序的java实现
排序中快速排序和归并排序的平均时间复杂度的nlogn,所以是比较常用的两种排序。 快速排序的主要思想是递归的“切分”一串儿数字,切分就是选取一个数组中的数字,把数组中比这个数字小的放左边,大的放右边,这就完成了一次切分。然后再将切分点左边的和右边的子数组切分,如此反复,直到要切分的数组长度为1,整个数组就排好序了。 看代码。 先写个AbstractSort,实现一些基本通用的功能,在归并排序中原创 2016-02-16 14:00:39 · 314 阅读 · 0 评论 -
归并排序的java实现
归并排序的思想是,要是一个数组中的数字是两串已经排好序的,那把这两串儿数字并成一串数字,那这个数组就排好序了,所以又要先排好左右两边的子数组,这是一个明显的递归,直接看代码。AbstractSort在我的另一篇快排实现中有。package sort;public class MergeSort extends AbstractSort{ Comparable[] aux; @Over原创 2016-02-16 14:18:14 · 340 阅读 · 0 评论 -
堆排序的java实现
堆排序是用大顶堆或者小顶堆的性质来实现排序。 先解释一下优先队列,优先队列就是从这个队列里面出来的数字总是这个队列里面数字最大或者最小的那一个,而堆就是一个优先队列的具体实现,大顶堆是一个完全二叉树,父节点大于等于子节点,所以他的顶(根)是最大的,小顶堆反之。 所以我们先实现一个大顶堆。package sort;/** * 使用二叉堆的优先队列,每个节点大于等于两个子节点 * 并且是完全二叉原创 2016-02-16 14:34:37 · 225 阅读 · 0 评论 -
用NFA实现正则表达式匹配(java代码)
看了一些高评论的博客,看起来都是很高深,我也写个看起来高深的。 用NFA实现正则表达式匹配,需要的类,有向图和有向图的深度遍历。下面NFA的实现。package stringFind;import digraph.Digraph;import digraph.DirectDFS;import simpleStructure.Bag;import simpleStructure.Stack2;原创 2016-02-16 14:52:11 · 1519 阅读 · 0 评论 -
java实现无向图的深度优先搜索和广度优先搜索
先实现无向图的数据结构。package graph;import simpleStructure.Bag;/** * 用邻接表做的图 * 用了一个Bag数组,数组的索引是顶点,索引的内容Bag里面存放与该顶点相邻的顶点 * @author Administrator * */public class Graph implements GraphItf{ private Bag原创 2016-02-16 19:32:03 · 1183 阅读 · 1 评论 -
用递归实现排列组合(java代码)
全排列递归算法思想:假设求abcdefg的全排列,先将第一个字母确定为a,然后求bcdefg的全排列就行了,然后将a与b交换位置,重复上述过程,直到a和g交换。 全组合递归算法思想:假设求abcdefg的全组合,分两种情况,一、将a放入组合中,再求出剩下的bcdefg的组合。二、不将a放入组合,求出剩下的bcdefg的组合。 下面看代码:package practise;public class原创 2016-02-19 18:00:08 · 4557 阅读 · 0 评论 -
java实现二分检索树
二分检索树的左子树比根小,右子树比根大。这里用二分检索树实现了一个符号表,包括常用的api。package symbolForm;import simpleStructure.Queue;public class BST<K extends Comparable<K>, V> implements SymbolForm<K, V>{ private Node root; privat原创 2016-02-19 20:48:29 · 383 阅读 · 0 评论