java学习
文章平均质量分 88
Ischanged
接受平凡。
展开
-
常见排序算法基本原理及实现(快排,归并,堆排,直接插入.....)
文章目录常见排序算法总览1.概念1.1 排序1.2 稳定性(重要)2.插入排序2.1直接插入排序-原理2.2代码实现2.3性能分析3.希尔排序3.1 原理3.堆排序3.1原理常见排序算法总览1.概念1.1 排序排序就是使待排序序列,按照其中的某个或某些关键字的大小(以什么作为比较基准),递增或递减的排列起来的操作。平时如果提到排序,通常指的是排升序(非降序)。通常意义上的排序,都是指的原地排序(in place sort)。1.2 稳定性(重要)两个相等的数据,如果经过排序后,排序算法能保证其原创 2021-12-05 11:50:31 · 3298 阅读 · 34 评论 -
Comparable,Comparator,Clonable 接口使用剖析
前言java中有许多的接口,今天我向大家简单的介绍我们平时常见的三个接口及其用法。接口可以由类通过emplements关键字实现,一个类实现了某一个接口,就具备了该接口的一些功能,就可以完成一些操作。Comparable接口排序基本数据类型,如int ,long 等,我们可以使用 Arrays.sort()方法进行排序,并且这个排序默认为升序排序是无法改变的,如下面的排序整形数组: public static void main(String[] args) { int[] ar原创 2021-10-24 22:26:51 · 661 阅读 · 16 评论 -
String类菜鸟级教程(字符串常量池及不可变,StringBuffer 和 StringBuilder)
文章目录前言创建字符串前言java是面向对象的一门编程语言,通过实例化对象,对象间的交互实现相应的功能,决解相应的问题。,java中实现了很多的类供我们使用,我们要学习java一定要学好一些常用的类,去学习里面的构造方法,成员方法,接口方法等,所以今天我就简单的向大家介绍String类,和类里面的一些构造方法及常用的方法。首先我打开java使用帮助文档,针对的是JDK1.8版本,看文档对Sting这个类的介绍。这里简单的说明了Sting这个类是在java.lang这个包底下的,它继承了object类,以原创 2021-10-07 09:32:20 · 2000 阅读 · 39 评论 -
实现双向链表(带傀儡节点)
引言在之前的博文中,我简单的向大家分享了一些链表相关的知识及一些面试题,如果感兴趣的老铁可以去瞧瞧,今天做题遇到要实现带傀儡节点的双向链表,做了下,之前的单向链表中我们也遇到要设置傀儡节点(哨兵节点的题),今天我们就来看一下实现双向链表(带傀儡节点)。基本思路对于链表没说带傀儡节点或者虚拟节点,这个链表没有真正的头结点,但是我们把第一个节点叫做头结点,它起到标识的作用,标识这个链表的头结点这个头结点的位置随时可能发生这变化,是不固定的,之后通过这个头结点我们要完成一些链表的增删查改。如果带傀儡节点这原创 2021-09-23 21:27:18 · 692 阅读 · 20 评论 -
面向对象编程(包,继承,组合)
包包含义导入包中的类继承组合包包含义(package) 是组织类的一种方式,使用包的主要目的是保证类的唯一性.(包实际上在直观来看就是一个文件夹而已! !如我们在编写程序的时候创建了一个project项目,打开文件的存储目录,project里面有一个文件夹src就是一个包,我们打开目录就可以看到我们创建的java文件了,再如jar包里面包含的都是字节码文件,它们都是类文件)。那么为什么要组织类呢????假如在实际开发过程中,你在代码中写了一个 Test 类. 然后你的同事也可能写一个 Test .原创 2021-09-16 22:52:11 · 482 阅读 · 20 评论 -
方法递归(斐波那契数列,青蛙跳台阶,汉诺塔问题)
这里写自定义目录标题递归的概念递归执行过程的详细分析经典递归问题分析与解答斐波那契数列问题青蛙跳台阶问题汉诺塔问题递归的概念什么是递归?程序调用自身的编程技巧称为递归( recursion)。 递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。 递归的主要思考方式在于:把大事化小递原创 2021-09-06 21:37:27 · 1274 阅读 · 27 评论 -
双向链表的实现(双向链表与单向链表的简单区别联系和实现)
前言单向链表和双向链表的优缺点及使用场景双向链表的简单实现及图示分析前言之前写了一些文章简单地介绍顺序表,链表的基础知识,还总结了几道链表的笔试题,今天继续开干,向老铁们简单地介绍一下无头双向循环链表及其代码的实现。为什么要引入无头双向循环链表呢?????我们可以简单地这样去思考,单向链表只能单向地从头节点去访问其他的节点,不能会退的访问其他的节点,也不能循环地访问,与单向链表不同,双向链表在插入删除的时候不需要寻找前驱节点,因为本身就能回到前面一个节点,**查找时,我们可以用二分发的思路,从首节.原创 2021-09-04 22:33:09 · 652 阅读 · 12 评论 -
链表经典面试题(反转链表,中间节点,倒数第k个节点,合并分割链表,删除重复节点)
这里写目录标题反转一个单链表。返回链表的中间结点输入一个链表,输出该链表中倒数第k个结点将两个有序链表合并为一个新的有序链表并返回。以给定值x为基准将链表分割成两部分在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点反转一个单链表。题目描述反转很好理解,就是我们生活中所说的颠倒,反转后原来链表的头节点变成尾结点,尾结点变成头节点,链表内容的顺序相反就行了。基本思路好理解的双指针(c里面的是指针,java里面是引用变量)定义两个指针: pre和 cur ;pre在前 cur在后,pr原创 2021-08-26 11:37:12 · 1526 阅读 · 29 评论 -
旋转链表(图解说明)
Leetcode题目描述:题目链接:旋转链表题目很简洁,就是移动节点,但其中有隐含的意思,要将链表的每个节点向右移动,使每个节点在新的位置,由于尾结点后面没有了节点,要移动就要形成环,所有的节点在环里面转,移动完后又把环断开,形成新的链表。方法:环形链表+移动基本思路:计算链表长度len,因为在求长度的时候我们顺带找了链表的最后一个节点,最后一个节点的长度没算,所以len的起始值为1.2.观察发现对链表的操作每len次循环一次,计算k % len可有效减少操作链表的次数(如果链表长度为3,你原创 2021-08-23 19:13:13 · 1056 阅读 · 7 评论 -
链表的概念和结构及基本功能函数的实现(单链表的实现)
????✏️引言????✏️链表的概念及结构????✏️单链表的实现及图示分析????????单链表之创建单链表????????单链表之计算单链表的长度????????单链表之打印单链表????????单链表之单链表的增删查改????????头插法插入元素????????尾插法插入元素????????把一个节点插入到链表的任意位置????????查找链表中是否含有某个元素????????删除链表中第一次出现value值的节点????????删除链表中出现value值得所有节点????????清空单链表??原创 2021-08-19 16:16:35 · 1227 阅读 · 10 评论 -
顺序表基本功能函数的实现
这里写目录标题线性表的概念顺序表动态顺序表的实现图解顺序表线性表的概念线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的(比如链表),线性表在物理上存储时,通常以数组和链式结构的形式存储顺序表顺序表的概念:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成原创 2021-08-13 22:30:11 · 953 阅读 · 14 评论 -
类和对象(类和类的实例化,this,static关键字,封装)
这里写目录标题类和对象的初步认识面向对象和面向过程类和类的实例化类的成员方法 (method)static 关键字二级目录三级目录类和对象的初步认识类就是一类对象的统称。对象就是这一类具体化的一个实例。类是对对象特征的大致描述,类就是类型,表示这一类对象,通过这种类型可以定义很多的对象。如人类这种类型,有姓名,身高,体重,性别,肤色等属性,那么通过这种类就可以定义对象了,对象就是人,这些人,可以是吴签,易烊千玺,毛不易,张三,李四等。这些人,有些能唱歌,跳舞,有些能打球,学习什么的。面向对象和面向过原创 2021-08-09 20:12:30 · 460 阅读 · 6 评论