数据结构
临时抱不到佛脚
这个作者很懒,什么都没留下…
展开
-
java实现希尔排序
希尔排序基本思想希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止示意图代码实现package com.sorttext;import java.util.Arrays;public class ShellSort3 { public static void main(String[] args) { int[] arr={5,4,9,8,2,6,原创 2020-11-02 16:22:23 · 148 阅读 · 0 评论 -
java实现插入排序
插入排序插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表思路图代码实现package com.sort;import java.text.SimpleDateFormat;import java.util.Arrays;impor原创 2020-11-02 15:54:01 · 111 阅读 · 0 评论 -
java实现选择排序
选择排序思想:每次找数组中最小的数字,与最前面的数字交换,与冒泡排序的区别就是,冒泡是两两比较交换,而选择排序确定一个数只需要交换一次代码实现package com.sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;public class SelectSort { //选择排序,每次从数组中找到最小值,进行一次换位置 public static原创 2020-11-02 15:41:14 · 82 阅读 · 0 评论 -
java实现冒泡排序 并优化
冒泡排序冒泡排序的思想就是两两比较,不断地向数组最后推送剩余数组中的最大值代码实现以及优化package com.sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;public class BubbleSort { public static void main(String[] args) { int[] array={3, 9, -1, 10,原创 2020-11-02 15:21:31 · 117 阅读 · 0 评论 -
逆波兰表达式(中缀表达式转换为后缀表达式)
后缀表达式后缀表达式适合计算式进行运算,但是人却不太容易写出来,尤其是表达式很长的情况下,因此在开发中,我们需要将 中缀表达式转成后缀表达式。初始化两个栈:运算符栈 s1 和储存中间结果的栈 s2;从左至右扫描中缀表达式;遇到操作数时,将其压 s2;遇到运算符时,比较其与 s1 栈顶运算符的优先级:1.如果 s1 为空,或栈顶运算符为左括号“(”,则直接将此运算符入栈;2.否则,若优先级比栈顶运算符的高,也将运算符压入 s1;3.否则,将 s1 栈顶的运算符弹出并压入到 s2 中,再次转到原创 2020-10-27 10:27:01 · 147 阅读 · 0 评论 -
java栈实现计算器(中缀表达式)
栈的实体类(数组模拟)/** * 用数组实现栈 */public class Stack { int[] array;//数组模拟栈 int top=-1;//指针指向栈的最顶端数据 int maxSize;//栈的最大容量 public Stack(int maxSize) { this.maxSize=maxSize; array=new int[maxSize]; } //判断是否为空 public bo原创 2020-10-23 11:04:53 · 196 阅读 · 0 评论 -
java单向环形链表解决约瑟夫问题
单向环形链表约瑟夫问题一、约瑟夫问题是什么?二、代码实现1.节点类2.代码实现总结提示:以下是本篇文章正文内容,下面案例可供参考一、约瑟夫问题是什么?Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列思路:用一个不带头结点的循环链表来处理 Josephu 问题:先构成一个原创 2020-10-22 22:15:43 · 167 阅读 · 0 评论 -
java数组以及单向链表实现栈的push,pop
文章目录一、栈是什么?二、代码实现1.用数组实现栈2.测试3用单向链表实现栈4测试提示:以下是本篇文章正文内容,下面案例可供参考一、栈是什么?栈的英文为(stack)栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。根据栈的定义可知,最先放入栈中元素在栈底,.原创 2020-10-22 21:19:20 · 903 阅读 · 0 评论 -
java双向链表的增删改查,顺序增加图文详解
文章目录前言一、双向链表是什么?二、案例1.节点类Node实现2.双向链表类DoubleLinkedLinst3.获取链表头,尾节点方法4.无脑增加方法add5.两个遍历方法(从头遍历和从尾遍历)6.修改节点upDate方法7删除方法delete()8.[重点菜]按顺序添加测试总结前言双向链表的增删改查,其中难点在于按顺序增加,如何保持节点中指向上一个节点的pre也能被修改成功提示:以下是本篇文章正文内容,下面案例可供参考一、双向链表是什么?双向链表也叫双链表,是链表的一种,它的每个数据结.原创 2020-10-21 21:15:07 · 541 阅读 · 1 评论 -
单向链表面试题(新浪百度腾讯)
求单链表中有效节点的个数遍历数组,通过length++ 得到有效节点的个数 //返回单向链表的有效节点 public static int getLength(Node head){ int length=0; //遍历数组 Node temp=head.next; while (true){ if (temp!=null){ length++; }el原创 2020-10-20 23:10:37 · 127 阅读 · 0 评论 -
java单向链表CRUD的实现
什么是链表链表是以节点的方式进行存储的,是链式存储每个节点包含date域和next域:指向下一个节点链表的各个节点不一定是连续的,这样做的作用的更好的利用碎片化的内存单向链表分为带头节点和不带头节点,根据需求自定义就可以代码实现单向链表实现 –水浒英雄排行榜管理完成对英雄人物的增删改查操作1.创建节点Node类package com.csdn.linkedlist;/** *创建节点,此例子链表存储的为绿林好汉,并能存储下一个节点的地址 */public class Node原创 2020-10-20 21:47:52 · 98 阅读 · 0 评论 -
数组实现环形队列 详细讲解
提示:所有的函数都有思路讲解,具体请大家看具体函数中的注释,如有问题请留言文章目录一、环形队列?二、代码实现1.代码实现总结一、环形队列?队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出实现思路1)既然是环形队列,那就一定有头有尾,有容量2)既然是数组实现,那一定有个算法保证可以让数组循环起来二、代码实现1.代码实现package com.data.queue;/** * 环形数组实现队列 */publi原创 2020-10-16 21:35:48 · 1304 阅读 · 0 评论 -
二维数组转换为稀疏数组,写入本地并读取转化为原始数组
稀疏数组的转化与写入读取提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录稀疏数组的转化与写入读取前言一、稀疏数组是什么?二、实现案例案例1.代码实现2.测试前言为了解决五子棋类型二维数组的占用空间大小为题,采用稀疏数组来存储数据提示:以下是本篇文章正文内容,下面案例可供参考一、稀疏数组是什么?示例:当一个数组中大部分元素为0,或者为同一原创 2020-10-15 20:58:57 · 127 阅读 · 0 评论