
Java数据结构和算法
不言尘世
全栈java学习
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 希尔排序算法
针对上一节的插入排序算法,它也有一定的弊端,如下:数组 arr = {2,3,4,5,6,1} 这时需要插入的数 1( 最小), 这样的过程是:{2,3,4,5,6,6}{2,3,4,5,5,6}{2,3,4,4,5,6}{2,3,3,4,5,6}{2,2,3,4,5,6}{1,2,3,4,5,6}结论: 当 需要插入的数是较小的数时, 后移的次数明显增多,对 效率有影响.所以,...原创 2020-04-23 10:51:19 · 504 阅读 · 0 评论 -
Java 插入排序
首先呢,这个插入排序,也是属于内存排序1 插入排序的思想:插入排序(Insertion Sorting)的基本思想是:把 把 n 个待排序的元素看成为一个有序表和一个无序表,开始时 有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。2 插入排序的思...原创 2020-04-23 09:17:23 · 510 阅读 · 0 评论 -
Java 选择排序
1 排序算法分类:内部排序:指将需要处理的所有数据都加载到 内部存储器( 内存)中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助 外部存储( 文件等)进行排序。常见的排序算法分类(见右图):2 排序算法思想:选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从 arr[0]~arr[n-1]中选取最小值,与 arr[0]交换,...原创 2020-04-21 11:22:07 · 224 阅读 · 0 评论 -
冒泡排序算法实现及优化
相信冒泡排序算法大家都不陌生,今天说一下如何进行优化正常的一组数据进行冒泡排序如下图:但是如果一组数据本身就是已经排序好的,如1,2,3,4,5,6,那么它还是会像上面那样的顺序进行排序,通过下面的改变可以很好的优化这一点直接上代码:import java.text.SimpleDateFormat;import java.util.Arrays;import java.util....原创 2020-04-18 13:21:21 · 265 阅读 · 0 评论 -
递归--迷宫问题
1 需求如下图:这里直接上底层代码:package com.sheng.recursion;public class MiGong { public static void main(String[] args) { // 先创建一个二维数组,模拟迷宫 // 地图 int[][] map = new int[8][7]; // 使用1 表示墙 // 上下全部置为1...原创 2020-04-17 21:14:45 · 131 阅读 · 0 评论 -
递归的调用机制
1 应用场景2 递归的概念简单的说: 递归就是方法自己调用自己,每次调用时 传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。3 递归调用机制...原创 2020-04-17 20:34:04 · 338 阅读 · 0 评论 -
栈的快速入门--数组模拟栈
1 栈的介绍栈的英文为(stack)栈是一个 先入后出(FILO-First In Last Out) 的有序列表。栈(stack) 是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。 。 允许插入和删除的一端,为 变化的一端,称为栈顶(Top) ,另一端为 固定的一端,称为栈底(Bottom) 。根据栈的定义可知 , 最先放入栈中元素在栈底 , 最后放入的元素在...原创 2020-04-17 19:41:27 · 174 阅读 · 0 评论 -
双向链表的增删改查
双向链表的增删改查的实现思路对上图的说明:分析 双向链表的遍历,添加,修改,删除的操作思路===》代码实现历 遍历 方和 单链表一样,只是可以向前,也可以向后查找加 添加 (默认添加到双向链表的最后)(1) 先找到双向链表的最后这个节点(2) temp.next = newHeroNode(3) newHeroNode.pre = temp;改 修改 思路和 原来的单向链表一样...原创 2020-04-17 12:35:49 · 903 阅读 · 0 评论 -
单链表的应用实例-单链表的增删改查(单链表反转,寻求有效节点个数,逆序打印等)
1.链表(Linked List)介绍链表是有序的列表,但是它在内存中是存储如下链表是以节点的方式来存储, 是链式存储每个节点包含 data 域, next 域:指向下一个节点.如图:发现 链表的各个节点不一定是连续存储.链表分 带头节点的链表和 没有头节点的链表,根据实际的需求来确定2.单链表的应用实例使用带 head 头的单向链表实现 –水浒英雄排行榜管理完成对英雄人物的增...原创 2020-04-17 12:10:59 · 259 阅读 · 0 评论 -
队列的顺序存储实现
今天用数组的方式来实现一下队列的顺序存储1 队列介绍队列是一个 有序列表,可以用 数组或是 链表来实现。遵循 先入先出的原则。即: 先存入队列的数据,要先取出。后存入的要后取出示意图:(使用数组模拟队列示意图)2 数组模拟环形队列分析说明:尾索引的下一个为头索引时表示队列满,即将队列容量空出一个作为约定,这个在做判断队列满的时候需要注意 (rear + 1) % maxSi...原创 2020-04-12 20:03:19 · 1303 阅读 · 0 评论 -
Java 数据结构和算法之稀疏数组
从今天开始,我会逐渐发布一些关于Java 中的数据结构和算法之类的文章,那么这些文章的内容参考可能会是尚硅谷中韩顺平老师讲的一些东西,加上自己的心得体会。稀疏数组1.基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:记录数组 一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而 缩小...原创 2020-04-11 20:50:02 · 186 阅读 · 0 评论