
数据结构
数据结构
成长的小牛233
不辜负每一份热爱
展开
-
堆排序和归并排序 java代码实现
文章目录堆排序java代码实现单元测试归并排序java代码实现单元测试堆排序java代码实现package csdn.dreamzuora.sort;import java.util.List;/** * Title: 抽象出排序类 * Description: * * @version 1.0 * @author: weijie * @date: 2020/10/22 17:59 */public abstract class Sort<E> { pu原创 2020-10-28 17:16:31 · 474 阅读 · 0 评论 -
计数排序和桶排序 java代码实现
文章目录计数排序java代码实现单元测试桶排序java代码实现单元测试计数排序java代码实现package csdn.dreamzuora.sort;import java.util.List;/** * Title: 抽象出排序类 * Description: * * @version 1.0 * @author: weijie * @date: 2020/10/22 17:59 */public abstract class Sort<E> { p原创 2020-10-28 10:29:43 · 335 阅读 · 0 评论 -
冒泡排序、快速排序 java代码实现
文章目录冒泡排序源码实现单元测试优化快速排序源码实现单元测试冒泡排序源码实现package csdn.dreamzuora.sort;import java.util.List;/** * Title: 冒泡排序 * Description: * 冒泡排序思想是把相邻的元素进行两两比较,当前面元素大于后面元素则进行交换 * @version 1.0 * @author: weijie * @date: 2020/10/22 17:50 */public class Bubble原创 2020-10-25 10:15:51 · 589 阅读 · 0 评论 -
红黑树 java代码实现
文章目录代码实现节点实现类红黑树实现单元测试代码实现节点实现类package csdn.dreamzuora.tree;/** * Title: * Description: * * @version 1.0 * @author: weijie * @date: 2020/10/19 13:30 */public interface Node {}package csdn.dreamzuora.tree;import java.io.Serializable;/**原创 2020-10-23 14:13:04 · 247 阅读 · 0 评论 -
二叉查找树 java代码实现
文章目录代码实现单元测试代码实现package csdn.dreamzuora.tree;/** * Title: * Description: * * @version 1.0 * @author: weijie * @date: 2020/10/19 13:30 */public interface Node {}package csdn.dreamzuora.tree;import java.io.Serializable;/** * Title: * De原创 2020-10-22 16:31:29 · 276 阅读 · 0 评论 -
二分查找 java代码实现
二分查找java代码package csdn.dreamzuora.query;/** * Title: 二分查找 * Description: * 时间复杂度:log2N * @version 1.0 * @author: weijie * @date: 2020/10/16 13:52 */public class BinarySearch implements Search { int[] array; public BinarySearch(int[] arr原创 2020-10-19 11:33:14 · 270 阅读 · 0 评论 -
递归学习 斐波那契 java代码实现
java代码package csdn.dreamzuora.recursion;/** * Title: 斐波那契额 * Description: *斐波那契数列:0、1、1、2、3、5、8、13、21、34、55..... * f[n] = f[n-2] + f[n-1] * 优点:代码简单 * 缺点:占用空间较大、如果递归太深,可能会发生栈溢出、可能会有重复计算 通过备忘录或递归的方式 * 去优化(动态规划) * 时间复杂度:2的n次方 * @version 1.0 * @au原创 2020-10-19 11:31:28 · 265 阅读 · 0 评论 -
栈、队列 java代码实现
文章目录队列数组实现java代码实现单元测试控制台打印链表实现java代码实现单元测试控制台打印栈数组实现java代码实现单元测试控制台打印链表实现java代码实现单元测试控制台打印队列概念:先入先出数组实现java代码实现package csdn.dreamzuora.queue;/** * @author weijie * @date原创 2020-10-19 11:28:09 · 383 阅读 · 0 评论 -
单向链表 双向链表 java代码实现
单向链表java代码package csdn.dreamzuora.list;/** * @Author weijie * @Date 2020/10/14 18:46 * @Description 单向链表 */public class SingleLinkedList { /** * 无数据头结点 */ private SingleNode headNode = new SingleNode(0, "head"); private Sin原创 2020-10-15 14:37:13 · 459 阅读 · 3 评论 -
【转载保存】B+树索引原理以及应用案例
地址:https://www.jianshu.com/p/486a514b0ded利用c/c++实现基于b+树小型关系型数据库:https://github.com/enpeizhao/duck_db利用java实现的基于b+树的数据库案例:https://github.com/liumengjun/BPlusTreeIndex1.什么是索引?索引:加速查询的数据结构。2.索引...转载 2019-05-14 15:22:23 · 433 阅读 · 0 评论 -
前缀树和后缀树
Trie树的应用:除了本文引言处所述的问题能应用Trie树解决之外,Trie树还能解决下述问题(节选自此文:海量数据处理面试题集锦与Bit-map详解):3、有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。9、1000万字符串,其中有些是重复的,需要把重复的全部去掉,保留没有重复的字符串。请怎么设计和实现?10、 ...原创 2019-02-28 15:43:24 · 2408 阅读 · 0 评论 -
java字典树(Trie)实现中文模糊匹配
原理解释:java实现:https://blog.youkuaiyun.com/yuhk231/article/details/51539840c实现:https://blog.youkuaiyun.com/qq_31175231/article/details/77827324代码模板:缺点,只能检索出在一个分支中的前缀匹配内容package com.xq.algorithm;import java.io.B...原创 2018-12-16 03:15:50 · 3702 阅读 · 0 评论 -
单链表头插法与尾插法的c语言实现(回顾)
#include&lt;stdio.h&gt;#include&lt;math.h&gt;#include&lt;stdlib.h&gt;typedef struct node{ int data; node *next;};int main(){ node *head = NULL; node *tail = NULL; node *p = N...原创 2018-07-03 12:09:11 · 1017 阅读 · 0 评论 -
LCS最长公共子序列java实现代码保存
package com.tjrac_java_2;import java.util.Scanner;public class Lcs { public static void main(String[] args) { String x,y; int[][] sum= new int [505][505]; int i,j,len...原创 2018-03-29 19:11:09 · 272 阅读 · 0 评论 -
拓扑排序 详解 + 并查集 详解 + 最小生成树详解
若您发现本文有什么错误,请联系我,我会及时改正的,谢谢您的合作!本文为原创文章,转载请注明出处 本文链接 : http://www.cnblogs.com/Yan-C/p/3943940.html 。哎呀,好久了啊,想写这篇博文好久了,但是因为懒的原因 一直迟迟没动手啊。今天,终于在长久的懒惰下,突然来了那么一点热度。把这篇博文写一下。本文分为以下几个部转载 2017-01-02 09:50:23 · 707 阅读 · 0 评论 -
邻接表的构建、DFS、BFS搜索
接着上次的文章“图的构建(邻接链表法)”,邻接链表法构建图相对来说比较简单,并且遍历起来也相对简单,但是要是动态添加图的节点和图的边,则是实在不方便,不过现在不管那么多,今天的主题是遍历。 - 有另外一种图的构建方法,叫做十字链表法,插入删除比较方便,但是相对来说比较复杂,改天闲着木事的再搞。(其实主要原因是因为三四年前写的代码,现在翻出来了,现成的,尼玛现在让我从头写那么复杂的数据结构,死的转载 2016-12-29 18:14:01 · 613 阅读 · 0 评论 -
平衡二叉树模板
#include #include #include #include using namespace std;struct node{ int ndata; //记录关键字数值 node *l,*r; int nheight; //平衡因子};int height(node* p) //返回树p的深原创 2016-12-21 07:43:42 · 721 阅读 · 0 评论 -
手把手教你写平衡二叉树
因为上BST课的时候睡觉睡过了结果。。。,后者折腾了一个下午才写了出来,感谢http://blog.chinaunix.net/uid-24948645-id-3913917.html博客的详细解析,但是上面的不足之处在于代码是伪代码,基本实现不了,然后自己做了修改,改成c++的写法。AVL树平衡二叉树数据结构AVL树是最先发明的自平衡二叉查找算法,是平衡二叉树的一种。在A原创 2016-12-16 15:33:35 · 4132 阅读 · 9 评论 -
sdut 数据结构实验之二叉树六:哈夫曼编码
#include #include #include #include using namespace std;int main(){ char s[10000]; while(scanf("%s",s)!=EOF) { priority_queue ,greater > Q;//利用优先队列,从小到大排序 int len原创 2016-12-04 02:41:16 · 1690 阅读 · 2 评论 -
赫夫曼编码长度计算问题?
网上例题:一组字符(a,b,c,d)在文中出现的次数分别为(7,6,3,5),字符'd'的哈夫曼编码的长度为?题解:首先构造huffman树每一步都将所有数字排序方法如下:1:3 5 6 72:6 7 8/ \3 53:8 13/ \ / \3 5 6 74:21/ \8 13/ \ / \3 5 6 7所以构造哈原创 2016-12-04 02:37:51 · 9874 阅读 · 0 评论 -
优先队列c++ STL用法
优先队列(priority queue)普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序每次的原创 2016-12-04 02:23:17 · 567 阅读 · 0 评论 -
赫夫曼编码
http://blog.youkuaiyun.com/webzhuce/article/details/53105831原创 2016-12-04 02:04:10 · 356 阅读 · 0 评论 -
sdut 二叉排序树
二叉排序树Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description二叉排序树的定义是:或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;原创 2016-12-02 02:35:09 · 594 阅读 · 0 评论 -
树结构练习——排序二叉树的中序遍历
树结构练习——排序二叉树的中序遍历Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的原创 2016-12-02 02:23:26 · 521 阅读 · 0 评论 -
算术表达式的前缀式、中缀式、后缀式相互转换
中缀表达式(中缀记法)中缀表达式是一种通用的算术或逻辑公式表示方法,操作符以中缀形式处于操作数的中间。中缀表达式是人们常用的算术表示方法。虽然人的大脑很容易理解与分析中缀表达式,但对计算机来说中缀表达式却是很复杂的,因此计算表达式的值时,通常需要先将中缀表达式转换为前缀或后缀表达式,然后再进行求值。对计算机来说,计算前缀或后缀表达式的值非常简单。前缀表达式(前缀记法、波兰式)前转载 2016-11-28 21:01:06 · 27112 阅读 · 0 评论 -
最简逆波兰模板
#include #include using namespace std; double exp() { char a[10]; scanf("%s",a);//注意scanf取入字符串遇到‘\0’停止 switch(a[0]){ case '+':return exp()+exp(); case '-':return exp(原创 2016-11-28 20:56:11 · 341 阅读 · 0 评论 -
判断两颗棵二叉树是否相等
int CompTree(TreeNode *tree1, TreeNode *tree2){bool isTree1Null = (tree1 == NULL);bool isTree2Null = (tree2 == NULL);//其中一个为NULL,而另一个不为NULL,肯定不相等if (isTree1Null != isTree2Null)return 1;//两个都为NU原创 2016-11-23 15:34:43 · 1281 阅读 · 0 评论 -
数据结构实验之栈六:下一较大值(二)
#include #include using namespace std;struct node{ int data; int next;//记录下一个元素死亡值 int pos;//用来记录每个元素的位置*/} a[100001],val[100000];int main(){ int t; while(~scanf("%d",&t))原创 2016-11-22 13:08:41 · 575 阅读 · 0 评论 -
数据结构实验之串一:KMP简单应用
#include#includeint next[1000000];char str[1000000],substr[1000000];void getnext(){ int i=0,j=-1; next[0]=-1; while(substr[i]!='\0') { if(j==-1||substr[i]==substr[j])原创 2016-11-21 19:30:44 · 1338 阅读 · 0 评论 -
sdut 双向队列(STL)
dequeq;//定义一个双向队列q,类型为long long q.push_front(a);//将a从队首插入队列 q.push_back(a);//将a从队尾插入队列 q.pop_front();//队首弹掉一个元素 q.pop_back();//队尾弹出一个元素 a=q.front();//返回队首元素 a=q.back();//原创 2016-11-20 17:15:11 · 492 阅读 · 0 评论 -
SDUT 双向队列(队列)
#include#include#include#includeusing namespace std;int main(){ int a[30000],n,m=11000,data; int l=0,r=m,i=0; cin>>n; string str; for(int j=1;j<=n;j++) { cin>>s原创 2016-11-20 11:22:47 · 403 阅读 · 0 评论 -
优先队列
转载自:http://www.cppblog.com/wanghaiguang/archive/2012/06/05/177644.htmlhttp://www.cnblogs.com/heqinghui/archive/2013/07/30/3225407.htmlhttp://blog.youkuaiyun.com/sun_168/article/details/7680911转载 2016-11-20 10:08:04 · 288 阅读 · 0 评论 -
链式栈
#include#includeusing namespace std;struct node{ int data; node *next;};struct stack{ node *top; node *bottom;};void initstack(stack *&s){ s->top=s->bottom=NULL; s->top原创 2016-11-19 19:45:25 · 262 阅读 · 0 评论 -
二叉树的前中后遍历
#include#includeusing namespace std;typedef struct BTtree{ char ch; BTtree *l,*r;};void Create_tree(BTtree *&tree){ char c; cin>>c; if(c=='#') { tree=NULL; return ;原创 2016-11-14 15:21:23 · 433 阅读 · 0 评论 -
顺序表应用1:多余元素删除之移位算法
顺序表应用1:多余元素删除之移位算法Time Limit: 1000MS Memory Limit: 650KBSubmit Statistic DiscussProblem Description一个长度不超过10000数据的顺序表,可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素从顺序表中删除,使该表由一个“非纯表”(值相同原创 2016-11-11 12:31:52 · 386 阅读 · 0 评论 -
最大最小距离算法(K-MEANS K-medoids )聚类算法的结合运用
聚类算法通常会得到一种分类,将n个点聚合成k类,同一聚类(即插槽簇)中的对象相似度较高;而不同类中的对象相似度较小。聚类算法的基本流程如下:(1)从n个节点中选择 k 个节点作为初始聚类中心。(2)将剩余节点根据它们与这k个聚类中心的代价大小,分别将它们分配给与其代价最小的(聚类中心所代表的)聚类。(3)更新聚类的聚类中心。不断重复(2)(3)这一过程将剩下其它节点分配完毕。(4)排序,将转载 2016-10-11 18:01:42 · 6970 阅读 · 0 评论 -
hdu3577(线段树+lazy+样例解释+代码解析)
DescriptionChinese always have the railway tickets problem because of its' huge amount of passangers and stations. Now goverment need you to develop a new tickets query system. One train can jus原创 2016-10-10 21:13:22 · 2499 阅读 · 0 评论 -
【总结】字符串匹配: KMP 和 拓展KMP
比起ac自动机,kmp就一个next数组,理解了如何初始化next后就可以搞一些模板题了,下面是还不错的学习资料,清晰易懂,自己用的模板也来自它: http://chaoswork.com/blog/2011/06/14/kmp%E7%AE%97%E6%B3%95%E5%B0%8F%E7%BB%93/kmp模板next[0]=-1;j=-1;for(i=0;im;){转载 2016-04-30 13:38:52 · 470 阅读 · 0 评论 -
KMP模板代码
#include#include#includeint next[100];void getnext(char b[]){ int i=1,j=0;//i是每个位子,j是回退的位子 next[1]=0; while(i { if(j==0||b[i-1]==b[j-1]) {原创 2016-04-19 19:40:43 · 546 阅读 · 0 评论 -
C++ Queues(队列)
C++队列是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。 back()返回最后一个元素empty()如果队列空则返回真front()返回第一个元素pop()删除第一个元素push()在末尾加入一个元素size()返回队列中元素的个数原创 2016-04-16 16:05:33 · 344 阅读 · 0 评论