
数据结构
文章平均质量分 82
新手村的0级玩家
一只飞奔的蜗牛,虽进步缓慢,但从未停止脚步
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LRU缓存结构解题过程
目录0.问题描述1.问题分析2.问题解决3.优化3.1引入新的数据结构3.2代码实现0.问题描述题目描述设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1)某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。当缓存的大小超过K时,移除最不经常使用的记录,即set或get最原创 2020-12-31 16:49:41 · 265 阅读 · 0 评论 -
变异二分查找解题过程
目录0.问题描述1.问题分析2.问题深化及解决0.问题描述题目描述请实现有重复数字的有序数组的二分查找。输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。输入 5,4,[1,2,4,4,5]返回值 3说明 输出位置从1开始计算看完题目就确定是二分查找,不用过脑 /** * 二分查找 * @param n int整型 数组长度 * @param v int整型 查找值 * @param a int整型一原创 2020-12-30 15:26:11 · 292 阅读 · 0 评论 -
回溯法之N皇后问题
回溯法有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。思想方法回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树原创 2017-01-15 14:30:04 · 528 阅读 · 0 评论 -
浅谈数据结构
数据结构 数据结构,是指一堆具有相同特定关系的数据元素的集合和加诸在其上的一系列操作。每种数据结构都规定了一种特定的关系,即元素之间的关联性。每种数据结构都规定了一系列对该数据结构下针对数据元素间关系的特定操作,这些操作具有针对性,特殊性。原创 2016-10-01 15:21:44 · 466 阅读 · 0 评论 -
分治算法之大整数相乘问题
1.问题描述 求两个大数A、B乘积的准确结果 其中A和B均为100位以上的十进制整数 A和B的位数可以不相等 2.问题分析(1)100位以上的整数,用整数变量直接存储装不下所以,中间运算时,牵扯到大数肯定当做字符串来存储(2)A和B直接乘操作肯定是操作不了,必须是分开来处理可以二分法,将AB转换A=A1*10^(n1/2) +A0 —– n1为a的位数 B=B1*10^原创 2016-10-22 19:18:56 · 6047 阅读 · 0 评论 -
数据结构Java实现——①栈-->栈的应用一、大数相加
几个比较有意思的栈的应用的例子描述:两个比较大的数(几百位)相加,如何才能处理原创 2015-01-04 12:32:10 · 1594 阅读 · 0 评论 -
数据结构Java实现——③串--->串的模式匹配:Brute-Force算法和 KMP算法
KMP模式匹配算法在Brute-Force算法的基础上进行了改进,改进后的算法,可以在匹配失败后,无需修改记录主串当前比较的字符的下标 i;而且,记录子串当前比较的字符的下标 j也不用清零。而是在已经比较过的字符的基础上,针对子串本身的特点,移动子串,以达到减少比较次数的目的当某次匹配不成功时,主串s的当前比较位置i不用回退,此时主串Si 可以直接和子串中的某个tk进行比较,此处的k的确定与主串无关,只有子串本身的构有关,即从子串本身就可以计算出k的值原创 2015-01-18 10:47:27 · 1738 阅读 · 0 评论 -
数据结构Java实现——③串
所谓串,“字符串”也,即字符串在一起作为一个整体,当然串也是线性表的一种,当然也有顺序存储,链式存储两种。很显然在学习了前面那么多的“特殊的”线性表之后,对常见的两种存储方式不难理解首先来说顺序存储,在最开始构造时,要预先的创建一个“大”数组,然后将数据存储尽量,对应顺序存储,必须要有一个记录当前实际占用“大”数组长度、也就是串本身的实际长度的变量。然后来说链式存储,首先链式存储肯定要用到结点对象(有指针域,有数据域),如果结点的数据域里存储的是单个字符,那么该链表称为单字符链表,否则,也就是结点原创 2015-01-18 10:30:50 · 2024 阅读 · 1 评论 -
数据结构Java实现——①栈-->栈的应用二、分隔符匹配
1、问题描述编译器在编译一段代码时,首先进行的就是分隔符的匹配,常见的分隔符有{ } [ ] ( )/* */2、思路首先要知道的一件事就是:分隔符运行嵌套,而且,读入的顺序和处理的顺序相反,很显然是用栈。算法描述如下: 从左到右扫描java语句,从语句中不断的读取字符,每次读取一个字符,若发现它是左分割符,则将它压入栈;当从输入中读到一个右分割符时,则弹出栈顶 的左分隔符,并且查看它是否和右分隔符匹配,若它们不匹配,则匹配失败,程序报错; 若栈顶没有左分隔符与右分隔符匹配,或原创 2015-01-04 12:36:42 · 962 阅读 · 0 评论 -
数据结构Java实现——①栈
首先,所谓栈,就是一个先进后出的一个线性表。其功能类似于一个水杯只能从一端添加,而且也只能在该端删除,对每一个元素而已,先进后出原创 2015-01-04 11:28:17 · 769 阅读 · 0 评论 -
数据结构Java实现——②队列--->队列的“奇葩”一循环顺序队列
学习了队列,就不得不知道一些特殊的队列,在实际应用中,这些队列有时用的更多,此为循环顺序队列循环顺序队列就是为了防止出现假溢出现象而出现的,其功能类似于一个环形,如图,但实际上还是一个线性存储的结构原创 2015-01-04 13:50:50 · 1265 阅读 · 0 评论 -
数据结构Java实现——②队列
写在前面转眼数据结构这本书就学完了,但是一直学习的是C版的,感觉很不爽,就借了本Java版的自学了点,感觉还不错, 特此共享。此处是队列。文字描述队列的特点就是先进先出,其功能可以比作一个管道,如图只能从一端添加,在另一端删除,对每一个元素而已,先进先出代码描述1、队列的抽象接口package org.Ston原创 2015-01-04 13:33:04 · 565 阅读 · 0 评论 -
数据结构Java实现——①栈-->栈的应用四、汉诺塔问题
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。原创 2015-01-04 12:52:32 · 1642 阅读 · 0 评论 -
数据结构Java实现——①栈-->栈的应用三、算术表达式求值
当一个算术表达式中含有多个运算符,且运算符的优先级不同的情况下,如何才能处理一个算术表达式?????2、思路首先我们要知道表达式分为三类: ①中缀表达式:a+(b-c/d)*e ②前缀表达式+a*-b/cde ③后缀表达式abcd/-e*+ 由于运算符有优先级,所以在计算机中计算一个中缀的表达式非常困难,特别是带括号的更麻烦,而后缀表达式中既无运算符优先又无括号的约束问题因为在后缀表达式中运算符出现的顺序正是计算的顺序,所以计算一个后缀的表达式更简单。所以,可以将求算术表达式的值的过程化原创 2015-01-04 12:44:37 · 5825 阅读 · 2 评论 -
数据结构Java实现——④数组——>稀疏矩阵十字链表存储法
作者信息文字描述1、十字链表的结点的结构2、十字链表的存储3、原创 2015-02-04 15:30:06 · 4261 阅读 · 0 评论 -
数据结构Java实现——②队列-->队列的“奇葩”二 优先级队列
写在前面有很多时候,一些数据的存储不仅需要先进先出,而且还有根据数据的优先级来排序,也就是优先级高的一定先出去,优先级相同的先进先出,此时就会用到优先级队列应用其实优先级队列的应用十分广泛,比如说构造哈夫曼树算法,再比如在一些计算机操作系统中用优先级队列来来满足抢先式多任务操作系统等等等等原创 2015-01-04 14:38:57 · 1351 阅读 · 1 评论 -
数据结构Java实现——④数组——>稀疏矩阵三元组顺序存储
一、名词解释1、稀疏矩阵 矩阵阵中非零元素较少且分布的没有规律2、三元组存储矩阵中的一个元素有三个属性:行号,列号,元素的值,成为三元组3、顺序结构 对于每一个三元组而已,根据行号优先或者列号优先排序起来,便于后期针对矩阵的运算原创 2015-02-04 14:18:21 · 5485 阅读 · 1 评论 -
数据结构Java实现——④数组——>奇葩矩阵的压缩和还原
矩阵的压缩:对于某些特殊的矩阵来说,非零元素较少,大部分元素为0,采用某种算法,将非零元素存储在一位数组里以达到节省存储空间的目的的过程,称为矩阵的压缩矩阵的还原:将压缩后的数组还原成原始矩阵的过程。1、对角矩阵①矩阵介绍所谓对角矩阵:矩阵中的所有非零元素都集中在以主对角线为中心的带状区域中,即除了主对角线上和直接在主对角线上下若干条对角线上的元素外,其余元素均为零。这样的矩阵称为半带宽为d的带状矩阵,带宽是2*d+1,d为直接在对角线上下方不为0的对角线数2、对称矩阵① 矩原创 2015-02-03 20:34:41 · 1920 阅读 · 0 评论 -
数据结构Java实现——④数组—>稀疏矩阵三元组顺序存储-->矩阵的倒置
作者信息文字描述倒置:把矩阵A的行换成相应的列,得到的新矩阵称为A的转置矩阵,记作AT或A。通常矩阵的第一列作为转置矩阵的第一行,第一行作为转置矩阵的第一列。那么,在已经存储好的三元组的顺序存储结构中,如果如何实现矩阵的倒置呢???第一反应肯定是直接遍历,然后行列对换即可,但是因为要求按照行号优先(也可以是列号优先,但是必原创 2015-02-04 14:45:58 · 1943 阅读 · 0 评论