![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机数据结构
ABC出云
这个作者很懒,什么都没留下…
展开
-
查找算法的java实现
查找算法:在java中,常用的查找算法有四种:1、顺序(线性)查找2、二分查找(必须掌握)3、插值查找4、斐波拉契查找(黄金分割点查找)① 顺序查找:思路一:找到第一个值为value的数的下标public static int seqSearch(int[] arr, int value) { // 线性查找是逐一比对,发现有相同值时,返回下标 for (...原创 2020-02-02 22:51:38 · 182 阅读 · 0 评论 -
排序算法的 java实现(二)
⑤ 快速排序实现快速排序需要在每一趟排序中找一个枢纽量pivotKey,并设置变量pivotIndex用来记录pivotKey应该放在哪个位置。假定枢纽量为排序区间的最左元素(pivotKey = arr[ left ]),在每一趟排序中,设置 两个标兵left与right,用right 从右往左 找 小于pivotKey的元素,找到后停下来,将该元素复制到left所在的位置;此时用l...原创 2020-02-01 11:26:29 · 122 阅读 · 0 评论 -
排序算法的 java实现(一)
排序算法包括 内部排序 和 外部排序,重点要掌握的是 八大内部排序算法:(这里假设从小到大排序)分别是:冒泡排序、插入排序、选择排序、希尔排序、堆排序、快速排序、归并排序、基数排序① 冒泡排序:基本思路:在一趟排序中,从左到右扫描数组,如果发现相邻两个数中,前一个数比后一个数大,则交换两个数。第1趟排序的代码是:for(int j = 0 ; j < arr.length ...原创 2020-01-28 21:34:21 · 137 阅读 · 0 评论 -
稀疏数组与二维数组的转换
稀疏数组:当一个数组里的元素大部分是0,或者是同一个值时,可以用稀疏数组来保存该数组的元素。(稀疏数组是用来保存数组有效数据的工具)稀疏数组可以用来干嘛?最典型的应用是五子棋,其中有大量的空位置,可以转换成同一个值。假设在五子棋中: 0 表示没有棋子,1表示黑子,2表示蓝子如下图,假设二维数组如图所示:得到的稀疏数组为:首先把二维数组定义出来:这里定义...原创 2020-01-26 22:45:59 · 229 阅读 · 0 评论 -
用栈实现多项式的计算(java语言实现)
基本思路: (1)通过一个index值作为索引(int类型),来遍历多项式;(2)如果扫描到一个数字,就直接入数栈;(3)如果扫描到一个符号,就分以下情况:a、如果当前符号栈为空,就将该符号直接入符号栈;b、如果符号栈不为空,就要进行优先级的比较: 1、如果 当前扫描到的操作符 的优先级 小于或等于 栈顶的操作符,就要从数栈 中pop出两个数,同时从 符号栈...原创 2020-01-22 18:46:24 · 789 阅读 · 0 评论 -
栈的基本定义,以及用java实现数组栈和链栈
栈的几个常用的应用场景:(1)子程序的调用:在跳往某个子程序前,会先将该程序(非跳往的子程序)下条指令的地址存放在堆栈中,直到子程序执行完毕,然后从堆栈中将地址取出,恢复原来程序的执行现场;(2)处理递归调用:和子程序的调用相似,只是除了要存放下一条指令的地址,还要将参数、区域变量等数据存入堆栈中。(3)表达式的转换(尤其是“ 中缀表达式 转 后缀表达式 ”)及求值。这个是面试的高频知识...原创 2020-01-21 18:58:41 · 342 阅读 · 0 评论 -
单向环形链表及约瑟夫问题的java实现
约瑟夫问题(Josephu问题)也称为“丢手帕问题”。问题描述:设编号为1、2、3、4......的n个小朋友围成一圈,约定编号为 k 的小朋友从 1 开始报数,轮流数到 m 的小朋友出列。接着出列小朋友的下一位又从1开始报数,轮流数到 m 的小朋友出列,以此类推,直到所有小朋友都出列为止,由此产生一个出列编号的序列。n = 5 表示有 5 个小朋友 ; k = 1 表示从第 1 个小朋友...原创 2020-01-20 10:23:07 · 205 阅读 · 0 评论 -
双向链表定义及基本操作的java实现
双向链表与单向链表的对比:(1)、单向链表的查找只有一个方向,而双向链表可以向前和向后查找;(2)、双向链表可以实现自我删除;而单链表删除一个节点必须要借助辅助节点,即需要删除节点的前一个节点。双链表基本操作的实现思路:(1)、遍历:方式和单链表一样,仅仅是多了双向查找的功能;(2)、添加(到双链表最后):1、首先找到双链表的最后一个节点;2、temp.next = n...原创 2020-01-19 22:22:27 · 684 阅读 · 0 评论 -
单链表(LinkedList)的java实现(注释详细)
单链表(LinkedList)的java实现重点:1、链表是以节点的方式存储的;2、每个节点包含data域、next域:指向下一个节点;3、链表的各个节点不一定是连续存储;4、链表分带头节点的链表和没有头节点的链表,具体根据实际需求来确定。示例类型:使用带head头节点的单链表实现水浒英雄排行榜管理对英雄人物的增删改查操作:head节点:1、不存放具...原创 2020-01-17 15:21:03 · 249 阅读 · 0 评论