- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 java实现基数排序(图文讲解)
基数排序基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或 bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法基数排序(Radix Sort)是桶排序的扩展基数排序是 1887 年赫尔曼·何乐礼发明的。它是这样实现的:将整数按位数切割成不同的数字,然后按每个位数分别比思路代码实现代码中有详细
2020-11-03 19:14:52
905
原创 java实现归并排序(图文讲解)
归并排序归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)思路示意图动态图代码实现package com.sort;import java.util.Arrays;public class MergeSort { public static void mai
2020-11-02 22:49:32
466
原创 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
169
原创 java实现插入排序
插入排序插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表思路图代码实现package com.sort;import java.text.SimpleDateFormat;import java.util.Arrays;impor
2020-11-02 15:54:01
127
原创 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
90
原创 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
135
原创 java实现快速排序(图)
快速排序快速排序是对冒泡排序的一种改进, 它是不稳定的。由C. A. R. Hoare在1962年提出的一种划分交换排序,采用的是分治策略(一般与递归结合使用),以减少排序过程中的比较次数,它的最好情况为O(nlogn),最坏情况为O(n^2),平均时间复杂度为O(nlogn)。基本思想选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小。然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以达到全部数据变成有序。代码
2020-11-02 15:14:27
326
原创 java解决迷宫和八皇后问题
迷宫问题通过递归让目标从黑点走到蓝点package com.data.migong;public class MiGong { public static void main(String[] args) { int[][] map=new int[8][7];//根据地图创建二维数组 for (int i = 0; i <7 ; i++) { map[0][i]=1; map[7][i]=1;
2020-10-27 20:52:54
118
原创 逆波兰表达式(中缀表达式转换为后缀表达式)
后缀表达式后缀表达式适合计算式进行运算,但是人却不太容易写出来,尤其是表达式很长的情况下,因此在开发中,我们需要将 中缀表达式转成后缀表达式。初始化两个栈:运算符栈 s1 和储存中间结果的栈 s2;从左至右扫描中缀表达式;遇到操作数时,将其压 s2;遇到运算符时,比较其与 s1 栈顶运算符的优先级:1.如果 s1 为空,或栈顶运算符为左括号“(”,则直接将此运算符入栈;2.否则,若优先级比栈顶运算符的高,也将运算符压入 s1;3.否则,将 s1 栈顶的运算符弹出并压入到 s2 中,再次转到
2020-10-27 10:27:01
154
原创 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
204
原创 java单向环形链表解决约瑟夫问题
单向环形链表约瑟夫问题一、约瑟夫问题是什么?二、代码实现1.节点类2.代码实现总结提示:以下是本篇文章正文内容,下面案例可供参考一、约瑟夫问题是什么?Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列思路:用一个不带头结点的循环链表来处理 Josephu 问题:先构成一个
2020-10-22 22:15:43
241
原创 java数组以及单向链表实现栈的push,pop
文章目录一、栈是什么?二、代码实现1.用数组实现栈2.测试3用单向链表实现栈4测试提示:以下是本篇文章正文内容,下面案例可供参考一、栈是什么?栈的英文为(stack)栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。根据栈的定义可知,最先放入栈中元素在栈底,.
2020-10-22 21:19:20
991
原创 java双向链表的增删改查,顺序增加图文详解
文章目录前言一、双向链表是什么?二、案例1.节点类Node实现2.双向链表类DoubleLinkedLinst3.获取链表头,尾节点方法4.无脑增加方法add5.两个遍历方法(从头遍历和从尾遍历)6.修改节点upDate方法7删除方法delete()8.[重点菜]按顺序添加测试总结前言双向链表的增删改查,其中难点在于按顺序增加,如何保持节点中指向上一个节点的pre也能被修改成功提示:以下是本篇文章正文内容,下面案例可供参考一、双向链表是什么?双向链表也叫双链表,是链表的一种,它的每个数据结.
2020-10-21 21:15:07
718
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
135
原创 java单向链表CRUD的实现
什么是链表链表是以节点的方式进行存储的,是链式存储每个节点包含date域和next域:指向下一个节点链表的各个节点不一定是连续的,这样做的作用的更好的利用碎片化的内存单向链表分为带头节点和不带头节点,根据需求自定义就可以代码实现单向链表实现 –水浒英雄排行榜管理完成对英雄人物的增删改查操作1.创建节点Node类package com.csdn.linkedlist;/** *创建节点,此例子链表存储的为绿林好汉,并能存储下一个节点的地址 */public class Node
2020-10-20 21:47:52
108
原创 数组实现环形队列 详细讲解
提示:所有的函数都有思路讲解,具体请大家看具体函数中的注释,如有问题请留言文章目录一、环形队列?二、代码实现1.代码实现总结一、环形队列?队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出实现思路1)既然是环形队列,那就一定有头有尾,有容量2)既然是数组实现,那一定有个算法保证可以让数组循环起来二、代码实现1.代码实现package com.data.queue;/** * 环形数组实现队列 */publi
2020-10-16 21:35:48
1334
原创 二维数组转换为稀疏数组,写入本地并读取转化为原始数组
稀疏数组的转化与写入读取提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录稀疏数组的转化与写入读取前言一、稀疏数组是什么?二、实现案例案例1.代码实现2.测试前言为了解决五子棋类型二维数组的占用空间大小为题,采用稀疏数组来存储数据提示:以下是本篇文章正文内容,下面案例可供参考一、稀疏数组是什么?示例:当一个数组中大部分元素为0,或者为同一
2020-10-15 20:58:57
226
原创 java0基础学习第九天
方法的重载在代码块的功能相似时我们考虑使用方法的重载方法的重载与返回值,修饰符列表,形式参数类型长度无关方法重载的条件在同一个类中方法名相同参数列表不同方法重复的案例public static void a(int i){}public static void a(int c){}// 与形式参数的变量类型有关,但是与名字无关public static void(int i){}public static int (int i){}//与返回值类型无关 方法的递归简单的说 就
2020-06-17 22:51:29
176
4
原创 java0基础学习第八天
什么是方法方法是具有某个特定功能,并且可以重复使用带代码块.方法的特点就是有很抢的复用性主方法main是程序的入口,在代码运行阶段直接被jvm调用方法的定义[修饰符] 返回值类型 方法名(形式参数)首字母小写后面单词的首字母大写修饰符可以没有,具体原因以后讲返回值类型可以是基本数据类型 和引用数据类型byte short int long float double char String 或者自己定义的类型没有返回值 类型为void有返回值类型时必须在方法体语句结束之前加上返回语句
2020-06-17 21:58:03
102
原创 java0基础学习第七天
for循环for循环的出现就是为了解决代码的复用性格式:for(变量初始化表达式;布尔类型条件表达式;更新表达式){ java语句;}先执行变量初始化表达式进行变量的初始化,然后判断条件表达式的结果是否为true,如果是true就执行java语句,java语句执行完以后执行更新表达式,再进行条件表达式的判断,如果结果还是为true那就继续执行java语句,一直到条件表达式的结果为falsefor循环的书写格式2int a = 10;for (;a < 10;){ a++; S
2020-06-09 21:53:15
101
原创 java0基础学习第六天
接收键盘输入java.util.Scanner s = new java.util.Scanner(System.in);控制语句控制语句分为三大类选择语句选择语句也叫分支语句,包含if和switch循环语句for,while,do…while转向语句break,continue,returnif语句if语句的格式if (布尔表达式){ java语句}else if(布尔表达式1){ java语句}else if(布尔表达式2){ java语句}else{ java
2020-06-06 21:31:51
170
1
原创 java0基础学习第五天
数据类型转换规则第一条八种数据类型之间,除了基本数据类型之间除了boolean类型,其他的都可以进行转换第二条如果字面量的值没有超出byte,short,char的取值范围,都可以直接转换第三条小容量向大容量转换,称为自动类型转换,byte<short(char)<int<long<float<doubleshort 和char 占字节一样,但是因为char是字符,没有正负一说,所以char表示的数更大第四条大容量向小容量进行转换时,称为强制类型转换,超出
2020-06-05 21:09:14
144
原创 java0基础学习第四天
数据类型数据类型用来声明变量,通过不同的数据类型为不同的变量分配适当的空间大小基本数据类型以二进制方式存储整数型byte 占一个字节=8bit 00000000 范围(-128-127)short 占两个字节 00000000 00000000 (-32768 ~ 32767)int 四个字节 (-2147483648 ~ 2147483647)long 占八个字节 (-9223372036854775808~9223372036854775807)浮点型float 四个字节
2020-06-03 23:16:03
115
原创 java0基础学习第三天
标识符标识符:凡是程序员可以自己命名的单词都是标识符类名方法名变量名接口名等等命名规则标识符必须由数字,字母(包括汉字),下划线_,美元$组成并且不能以数字开头,也不能用关键字作为表示符(例public,void等),严格区分大小写命名规范驼峰命名类名和接口名 高驼峰 例TestJava其他 低驼峰 例 textJava源代码中 主方法的方法名main不可以修改 java规定对于类名 源代码中出现A和a类 则按照排列顺序只执行最开始出现的关键字
2020-06-02 22:27:35
98
原创 0基础学习java第二天
HelloWorld程序代码public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World"); }}源代码中的类可以是一个,也可以是多个,但是公共的类只能有一个,有公共类时需要注意源代码文件的文件名要对应被public修饰的类名path环境变量path环境变量的理解:可以通过在path命令窗口中添加任意目录下.exe文件的绝对路径来新增dos窗口下的dos
2020-06-01 22:26:01
118
原创 java0基础学习第一天
DOSDOS命令窗口因为早期计算机没有图形处理界面所以需要运用dos命令使用计算机,DOS命令窗口"win+r"输入cmdDOS命令盘符切换 例如:d:(字母加冒号即可)打开文件夹 cd xxx展示 dir创建文件夹 mkdir返回上一级 cd…返回根目录 cd/清屏 cls删除 del xxx.java(del *.java即删除当前路径下所有的.java文件)重点相对路径和局对路径的理解绝对路径:是带盘符的具体路径(黑龙江省五常市步行街)相对路径:相对现在位置而
2020-05-31 21:44:33
155
java栈实现计算器中缀表达式
2020-10-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人