- 博客(26)
- 收藏
- 关注
原创 插入排序算法
插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。基本思想:代码实现:public static void insertSort(int[] arr){ for (int i = 1; i <arr.length; i++) { int insertVal=arr[i]; //定义插入的数 int insertIndex=i-1; //即arr[1]的前面这个数的下标...
2021-10-22 11:33:16
103
原创 递归需要遵守的重要规则
执行一个方法时,就创建一个新的受保护的独立空间(栈空间)方法的局部变量是独立的,不会相互影响, 比如n变量如果方法中使用的是引用类型变量(比如数组),就会共享该引用类型的数据.递归必须向退出递归的条件逼近,否则就是无限递归,出现StackOverflowError,死龟了:)当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕。...
2021-10-22 10:05:23
142
原创 IO流的基础
1.流的三种分类方式 流向:输入流、输出流 数据单位:字节流、字符流 流的角色:节点流、处理流2.写出4个IO流中的抽象基类,4个文件流,4个缓冲流 InputStream FileXxx BufferedXxx OutputStream Reader Writer Inpu...
2021-10-22 10:04:45
81
原创 选择排序算法
选择排序的思路图解代码实现: public static void main(String[] args) { int[] arr={55,-1,3,577,312,}; for (int i = 0; i <arr.length-1 ; i++) { int min=arr[i]; for (int j = i+1; j <arr.length ; j++) { ...
2021-10-22 09:59:30
85
原创 冒泡排序算法
冒泡算法图解实现代码:public static void main(String[] args) { int[] arr={99,55,31,-44,5}; boolean res=false;//优化 for (int i = 0; i <arr.length-1 ; i++) { for (int j = 0; j <arr.length-1-i ; j++) { if (arr[j]>arr[j+...
2021-10-21 23:51:04
72
原创 排序算法的介绍
排序也称排序算法(SortAlgorithm),是将一组数据,按照指定的顺序进行排序的过程。排序的分类:1)内部排序: 指将需要处理的所有数据都加载到内部存储器(内存)2)外部排序: 数据量过大,无法全部加载到内存中,需要借助外部存储(文件)进行排序。3)常见的排序算法分类如下算法的时间复杂度1)事后统计的方法 这种方式,要在同一台计算机的相同状态下运行,才能比较哪个算法速度更快。2)事前估算的方法 通...
2021-10-21 23:04:23
132
原创 数组模拟环形队列的实现
环形队列代码如下:class CircleArray{ private int maxSize;//表示数组的最大容量 //front 变量的含义做一个调整:front就指向队列的第一个元素,front初始值=0 private int front; //rear 变量的含义做一个调整:rear指向队列的最后一个元素的后一个位置,空出一个约定 //rear=0 private int rear;//队列尾 private int[] ar...
2021-10-19 19:21:44
47
原创 前缀、中缀、后缀表达式(逆波兰表达式)
1.前缀表达式又称波兰式,前缀表达式的运算符位于操作数之前举例说明: (3+4)×5-6 对应的前缀表达式就是 - × + 3 4 5 6从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素 和 次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果例如: (3+4)×5-6 对应的前缀表达式就是 - × + 3 4 5 6 , 针对前缀表达式求值步骤如下:从右至左扫描,将6、5、4、3压入堆栈
2021-10-18 23:03:58
113
原创 Collection集合
List接口:存储有序的、可重复的数据。 jdk1.2* ArrayList:作为List接口的主要实现类;线程不安全,效率高* 底层使用Object[] elementDate存储 jdk1.2* LinkedList:对于频繁的插入、删除操作,使用此类效率比ArrayList高;* 底层使用双向链表存储 jdk1.2* V.
2021-10-16 11:57:27
63
原创 注解 (Annotation) 概述
从 JDK 5.0 开始, Java 增加了对元数据(MetaData) 的支持, 也就是 Annotation(注解) Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加 载, 运行时被读取, 并执行相应的处理。通过使用 Annotation, 程序员 可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。代 码分析工具、开发工具和部署工具可以通过这些补充信息进行验证 或者进行部署。 Annotation 可以像修饰符一样被使用, 可用于修饰
2021-10-11 10:29:12
83
原创 枚举类的使用
一、枚举类的使用1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类2.当需要定义一组常量时,强烈建议使用枚举类3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。二、如何定义枚举类jdk5.0之前,自定义枚举类jdk5.0,后,可以使用enum关键字定义枚举类三、Enum中常用的方法//toString():返回当前枚举类对象常量的名称//values():遍历枚举类的常量//valuesOf(String objName):返回枚...
2021-10-10 22:59:25
486
原创 定制排序:java.util.Comparator
当元素的类型没有实现java.lang.Comparable接口而又不方便修改代码, 或者实现了java.lang.Comparable接口的排序规则不适合当前的操作,那 么可以考虑使用 Comparator 的对象来排序,强行对多个对象进行整体排 序的比较。 重写compare(Object o1,Object o2)方法,比较o1和o2的大小:如果方法返 回正整数,则表示o1大于o2;如果返回0,表示相等;返回负整数,表示 o1小于o2。 可以将 Comparator 传递给 sort 方法
2021-10-10 14:29:22
89
原创 自然排序Comparable
自然排序*说明:Java中的对象,正常情况下,只能进行比较:==或!=。不能使用<或>* 但是在开发场景中,我们需要比较对象的大小。* 实现方法:使用Comparable或Comparator//Comparable接口的使用举例//1.像String、包装类实现了Comparable接口,重写了comparaTo()方法。给出了比较两个对象的方式//2.像String、包装类重写comparaTo()方法以后,进行从小到大的排序//3.重写compar..
2021-10-10 13:54:00
81
原创 泛型的概念
所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类 型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如, 继承或实现这个接口,用这个类型声明变量、创建对象时)确定(即传入实 际的类型参数,也称为类型实参)。 从JDK1.5以后,Java引入了“参数化类型(Parameterized type)”的概念, 允许我们在创建集合时再指定集合元素的类型,正如:List,这表明 该List只能保存字符串类型的对象。 JDK1.5改写了集合框架中的全部接口和类,为这些接口、类增..
2021-10-04 23:39:37
106
原创 栈(stack)的介绍
栈的英文为(stack) 栈是一个先入后出(FILO-First In Last Out)的有序列表。 栈(stack)是限制线性表中,元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。 根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除应用场景子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直
2021-09-27 17:39:06
408
原创 Java中String类的split()函数
关于split()函数有两种写法,返回值都是String[] 数组。第一种:public String[] split(Stringregex):参数:regex - 定界正则表达式返回:字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的抛出:PatternSyntaxException - 如果正则表达式的语法无效如图。第二种:public String[] split(Stringregex,intlimit)参数:regex - 定界正则表达式limi...
2021-09-26 20:23:34
2003
原创 链表(Linked List)的介绍
链表是有序的列表,但是它在内存中是存储如下链表是以节点的方式来存储,是链式存储 每个节点包含 data 域, next 域:指向下一个节点. 如图:发现链表的各个节点不一定是连续存储. 链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定...
2021-09-25 17:49:07
490
原创 队列的介绍
队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出 示意图:(使用数组模拟队列示意图)
2021-09-25 15:50:41
59
原创 稀疏数组基本介绍
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模...
2021-09-24 16:25:37
44
原创 线性结构和非线性结构
数据结构包括:线性结构和非线性结构。线性结构线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的 链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息 线性结构常见的有:数组、队列、链表和栈.非线性结构非线性结构包括:二维数组,多维数组,广义表,树结构,图结构...
2021-09-24 16:14:34
70
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人