![](https://img-blog.csdnimg.cn/20191014211648790.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java数据结构与算法
字符串,稀疏数组,栈,队列,链表,树,图,排序算法,查找算法
坡一凹飘
这个作者很懒,什么都没留下…
展开
-
Java数据结构(4)链表——环形链表
Java数据结构(4)链表——环形链表文章目录Java数据结构(4)链表——环形链表1.环形链表简介2.环形链表的打印3.环形链表节点插入4. 环形链表节点删除5.完整代码6.环形链表的更多1.环形链表简介如图所示:环形链表和单向链表的唯一区别就是尾节点指向头节点。关于单向链表的相关内容可查看:Java数据结构(4) 链表——单向链表LeetCode-206.反转一个单链表。...原创 2019-10-26 20:14:38 · 962 阅读 · 0 评论 -
Java数据结构(4)链表——单向链表的串联
Java数据结构(4)链表——单向链表的串联关于单链表的基本实现与插入节点和删除节点等常用方法,以及单链表反转的栈实现可查看以下两篇文章:Java数据结构(4) 链表——单向链表LeetCode-206.反转一个单链表单向链表的串联,只需将一个链表的Last节点的next指向另一个链表的头节点first即可。 //单链表的串联 public LinkedList Conn...原创 2019-10-24 20:01:14 · 390 阅读 · 0 评论 -
Java数据结构(4) 链表——单向链表
文章目录Java数据结构(4) 链表——单向链表1.链表的简介2.单向链表代码实现3.单向链表的节点删除与插入Java数据结构(4) 链表——单向链表1.链表的简介链表是有序的列表,但以节点的方式存储数据,是链式存储。一个节点包括:数据域(data):存放数据,链接域(next):指向下一个节点。各节点不一定是连续存储用代码表示就如下所示:Node节点类:/** * 代码实现链表—...原创 2019-10-22 22:08:27 · 320 阅读 · 0 评论 -
Java基础查找算法(4)——斐波那契查找
Java基础查找算法(4)——斐波那契查找1.斐波那契查找简述斐波那契查找也称黄金分割法,与二分查找和插值查找类似,只是mid的选取有所不同。Java基础查找算法(2)——二分查找(折半查找)Java基础查找算法(3)——插值查找(插入查找)斐波那契查找中mid的选取:黄金分割点:一条线分为两部分,使其中一部分与全长之比等于另一部分与这部分之比。黄金分割值 约等于 0.618(取前...原创 2019-09-28 17:28:00 · 575 阅读 · 2 评论 -
Java基础查找算法(3)——插值查找(插入查找)
Java基础查找算法(3)——插值查找(插入查找)1.插值排序简述插值查找,又称插入查找,与二分查找类似,需要所查数组已经有序,只是对mid下标的选取有所不同而已。Java基础查找算法(2)——二分查找(折半查找)二分查找中 mid下标的选取公式:mid=(left+right)/2插值查找中 mid下标的选取公式:mid=left+(target-a[left])* (right-le...原创 2019-09-25 17:09:04 · 659 阅读 · 0 评论 -
Java基础查找算法(2)——二分查找(折半查找)
文章目录Java基础查找算法(2)——二分查找(折半查找)1.二分查找简述2.二分查找代码实现2.1简介代码(无注释)2.2 完整代码(含注释与运行实例)3.运行实例Java基础查找算法(2)——二分查找(折半查找)1.二分查找简述二分查找,又称折半查找.这个查找有个前提条件:所查数组已经有序假设:所查数组:arr查询目标值:target数组的最左下标 left数组...原创 2019-09-24 22:07:12 · 419 阅读 · 0 评论 -
Java基础排序算法(7)——基数排序
文章目录Java基础排序算法(7)——基数排序1.基数排序简述1.1 基数排序的先决条件1.2 基数排序的基本步骤1.3 图示举例此过程2.基数排序代码实现3.运行效果Java基础排序算法(7)——基数排序1.基数排序简述1.1 基数排序的先决条件需要排序的数组的元素均为正整数(当然也可以变通:负数单独拿出来当作正整数排序,小数则所有元素都乘10的倍数使其全部为整数,这些拓展本文不赘...原创 2019-09-24 22:01:02 · 295 阅读 · 0 评论 -
Java基础查找算法(1)——线性查找(顺序查找)
文章目录Java基础查找算法(1)——线性查找(顺序查找)1.线性查询简述2.代码实现2.1简洁代码2.2 工具类2.3 完整代码(含注释与运行实例)3.运行效果Java基础查找算法(1)——线性查找(顺序查找)1.线性查询简述线性查找,也称顺序查找。查找思路:从数组的一端开始遍历,分别与目标值比较,相等则将下标添加到目标值的下标集合中。2.代码实现2.1简洁代码 private st...原创 2019-09-24 19:09:43 · 494 阅读 · 0 评论 -
Java基础排序算法(6)——归并排序
Java基础排序算法(6)——归并排序1.归并排序简述 归并排序是利用归并的思想实现排序的方法,采用分治策略(将问题分成小问题递归求解,再将小问题的解何在一起)。过程即:原始数组中有n个数据,可分成n个已经排序好了数组(就一个元素,自然已经有序),让后将n个有序数组两两归并成一个长度均为2或1的有序数组(n为奇数则剩下单独一个只有一个元素的有序数组),总计n/2或n/2-1个有序数...原创 2019-09-20 22:28:48 · 170 阅读 · 0 评论 -
Java基础算法(5)——快速排序
Java基础算法(5)——快速排序1.快速排序简述快速排序是一种分治的排序算法,由冒泡排序改进而来,冒泡排序只对相邻元素进行比较,每次相邻元素交换也只能消除一个逆序。而快速排序通过两不相邻元素的一次交换消除多个逆序,大大加快排序速度。过程简述:以升序为例,在数组中选取切分元素(本例中选取未排序数组第一个元素),通过一次排序使其左边均小于它,右边均大于它。然后对小于它的前一部分数组和大于它的后...原创 2019-09-15 18:01:37 · 225 阅读 · 0 评论 -
Java基础算法(4)——冒泡排序
Java基础算法(4)——冒泡排序1.冒泡排序思想与原理简述冒泡排序是一种最简单的交换排序,通过相邻元素两两比较,如果逆序(若需排为升序,则逆序是前者大于后者),则进行交换,使得大的元素像气泡一样逐渐往上(升序即大元素右移)。每次遍历都把最大值排到了未排序序列的最后需要遍历(排序)的次数:数组长度-1 (最后就剩一个元素了,不需要再排序了)(简单说:第n次排序,都是把第n大的数,排在倒...原创 2019-09-09 23:28:44 · 224 阅读 · 0 评论 -
Java基础算法(3)——希尔排序
Java基础算法(3)——希尔排序1.插入排序思想与原理简述希尔排序基于插入排序,但效率更高。因为插入排序只能交换相邻元素,若最小元素在尽头,需交换(数组长度-1)次,效率低。希尔排序中有一个增量(h)的概念,希尔排序是基于间隔为增量(h)进行插入排序的,以此实现不相邻交换,自定义增量(h)还需递减至1,即最后是一遍普通的插入排序,只不过此时数组已经局部有序(也称h有序数组);增量(h)的取...原创 2019-09-09 11:51:53 · 221 阅读 · 0 评论 -
Java基础算法(2)——插入排序
Java基础算法(2)——插入排序1.插入排序思路简述遍历时每一元素插入前面已排序的序列中的合适位置(若为升序则大于前一元素小于后一元素)以c s d n x i n g w e i 为例子,排序过程如下:因为要插入元素,所以直接从第二个元素开始遍历:以下为排序过程:第一次插入s: s>c,s插入c后面: c s d n x i n g w e i第二次插入d: d>...原创 2019-08-20 21:11:47 · 177 阅读 · 0 评论 -
Java基础算法(1)——选择排序
Java基础算法(1)——选择排序1.建立排序基类为了方便以后专心写排序的逻辑,于是将一些经常重复使用的方法抽离出来,此处参考《算法》第四版一书。方法简介:sort(Comparable[] a) 排序传入的数组less(Comparable v,Comparable w) 比较v,w的值,若v<w 返回boolean类型exch(Comparable[] a,int i,in...原创 2019-08-19 23:25:32 · 174 阅读 · 0 评论 -
java数据结构(3) 栈Stack
java数据结构(3) 栈Stack1.Stack栈的概念栈是一种后进先出的线性表。2.Stack的6个方法的使用Stack() 无参构造push(item) 将元素压栈 push(item)pop() 栈顶元素出栈 栈空时抛出异常 EmptyStackExceptionpeek() 查看栈顶元素,但并不将其出栈栈空时抛出异常 EmptyStackExceptionempty...原创 2019-08-10 12:04:43 · 197 阅读 · 0 评论 -
java数据结构(2) 队列queue
java数据结构(2) 队列queue1.queue概念与需求案例买地铁票排队啥的…2.queue的6个方法介绍导入Queue工具包import java.util.Queue;Queue类有以下六个方法:add() :添加元素,失败时抛出异常offer() :添加元素remove() :移除元素,失败时抛出异常poll():移除元素element()...原创 2019-08-06 22:22:11 · 342 阅读 · 0 评论 -
java数据结构(1) 稀疏数组sparsearray
java数据结构(1) 稀疏数组sparsearray此博客为学习笔记,学习尚硅谷java数据结构课程后所撰写的笔记。1. 需求案例1.1 保存棋盘信息至文件假如把白棋设为1,黑棋设为2,空棋设为0,将棋盘看作一个二维数组。当棋子数较少时,0很多,使用二维数组保存数据到文件中,会保留大量无用的0 (这是没什么意义的数据)2. 稀疏数组简介2.1 使用方法记录数组行列数以及多少个不...原创 2019-08-06 20:01:30 · 825 阅读 · 0 评论