![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
云上行者Gorge
飞翔!
展开
-
排序算法总结与实现
算法基本概念算法稳定性如果待排序中有两个元素Ri 与Rj ,其对应的关键字keyi 与keyj ,并且在排序前Ri 在Rj 前面,如果使用某一种排序算法后,Ri 仍然在Rj 前面,则称这个算法是稳定的。否则称这个算法不稳定。算法是否稳定,不是衡量一个算法优劣,主要是针对算法的性质进行描述。算法时间复杂度某一个语句或者块,在算法中被重复执行的次数。算法中所有语句的频度之和记作T(n),时间复杂度主要分析T(n)的数量级,算法中基本的运算的频度与T(n)同数量级,算法的时间复杂度记为:T(n) = O原创 2021-09-16 22:56:38 · 240 阅读 · 0 评论 -
N叉树的最大深度
package T;import java.util.List;class NTreeNode{ int val ; List<NTreeNode> children; public NTreeNode(){ } public NTreeNode(int val,List<NTreeNode> children) { this.val = va...原创 2019-12-15 11:16:42 · 113 阅读 · 0 评论 -
有一个文本串S和一个模式串P,要查找P在S中的位置——KMP算法
关键是求解NEXT数组 Next数组就是当前字符之前的字符串中,有多大长度的相同前缀与后缀public class KMP { /** * KMP算法的实现 */ /** * 求解NEXT数组 */ private static void getNext(char [] p,int [] next){ int len = p.length; next[...原创 2018-10-14 14:54:36 · 2314 阅读 · 0 评论 -
有一个文本串S和一个模式串P,要查找P在S中的位置—暴力破解法
public class StringMatch { /** * 暴力匹配法 */ private static int StringMa(String s,String p){ int SLen = s.length(); int PLen = p.length(); int i= 0,j=0; while(i<SLen &&...原创 2018-10-14 13:59:54 · 1128 阅读 · 0 评论 -
哈希表—拉链法
public class Link { /** * 有序链表链接点 */ public int data; public Link nextLink; public Link(int data){ this.data = data; } public int getKey(){ return data; }@Overridepub...原创 2018-10-14 12:40:35 · 360 阅读 · 0 评论 -
二分探测法实现hash表
public class DataItem { private int iData; public DataItem(int i){ iData = i; } public int getkey(){ return iData; }}public class HashDouble {/** * 开放地址法之在Hash解决冲突(最常用的) */ p...原创 2018-10-13 19:48:14 · 339 阅读 · 0 评论 -
哈希表——线性探测
/** * 哈希表是根据关键码值来进行访问的数据结构 * 也就是说 他通过关键码值映射到表中的一个位置来访问记录,来加快查找的速度, * 这个映射叫做散列函数,这个存放记录的数组叫做散列表 * 1、哈希表可以快速的插入,查找,删除 * 2、哈希表基于数组实现,一旦确定,不容易维护 * 3、没有一种简单的方式实现遍历,因此若是需要这个功能,那么需要选择其他的数据结构 * @author...原创 2018-10-13 19:04:29 · 823 阅读 · 0 评论 -
队列的实现
/** * 队列的实现 * 队列中第一插入的元素会被第一个移除 * 几种常见的操作 * Insert 向队尾插入元素 * Remove 移除队首元素 * Peek 查看队首元素 * 队列也可以基于数组实现或者基于链表实现 * @author hp * */public class Queue { private int maxSize;// 队列的...原创 2018-10-13 16:32:49 · 69 阅读 · 0 评论 -
栈的实现
public class StackX { // 栈只允许访问一个数据项,即最后一项。移除最后一个元素之后才能访问倒数第二个元素,以此类推。 /** * 栈的几种操作 * Push:插入一个元素到栈顶 * Pop:删除栈顶的元素 * Peek:查看栈顶的元素 * 要实现一个栈,一般有两种方式,基于链表实现和基于数组实现 * 如果在栈的大小确定的情况下,一般使用数组来建...原创 2018-10-13 15:35:52 · 86 阅读 · 0 评论 -
双端列表的实现
package DoubleLink;public class Link { /** * 双端链表 链接点 和普通的链表的链接点相同 */ public float data; public Link next; public Link(float data){ this.data = data; } @...原创 2018-10-12 11:28:27 · 212 阅读 · 0 评论 -
单向链表的实现
package SingleList;public class Link { /** * 单向链表链节点 * @author */ // 链接点中包括两部分 一部分数数据项 一部分是指向下一个链接点的引用 public float data;//数据项 public Link next = null; //指向下一个链节点的引用 ...原创 2018-10-12 11:24:36 · 128 阅读 · 0 评论