- 博客(16)
- 收藏
- 关注
原创 数据结构8---排序
稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持 不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳 定的;1. 归并的缺点在于需要O(N)的空间复杂度,归并排序的思考更多的是解决在磁盘中的外排序问题。所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特 点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。
2025-08-28 20:07:02
658
原创 数据结构7 --- 优先级队列
1. 使用时必须导入PriorityQueue所在的包,即:2. PriorityQueue中放置的元素必须要能够比较大小,不能插入无法比较大小的对象,否则会抛出 ClassCastException异常3. 不能插入null对象,否则会抛出NullPointerException4. 没有容量限制,可以插入任意多个元素,其内部可以自动扩容5.PriorityQueue底层使用了堆数据结构6. PriorityQueue默认情况下是小堆---即每次获取到的元素都是最小的元素1 构造。
2025-08-27 09:53:59
788
原创 数据结构6----二叉树
对于深度为K的,有n 个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从0至n-1的结点一一对应时称之为完全二叉树。层序遍历:设二叉树的根节点所在 层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层 上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点;2. 若规定只有根结点的二叉树的深度为1,则深度为K的二叉树的最大结点数是 (k>=0)
2025-08-26 12:13:09
581
原创 数据结构5--栈和队列
现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺 序是( )。1. 若进栈序列为 1,2,3,4 ,进栈过程中可以出栈,则下列不可能的一个出栈序列是() A: 1,4,3,2 B: 2,3,4,1 C: 3,1,4,2 D: 3,4,2,1。((a+(b*c)) + (((d*e)+ f )*g )) 将所有的运算符移到这一层括号的后面 然后 去掉括号 就变成了后缀表达式。在实际工程中,使用Deque接口是比较多的,栈和队列均可以使用该接口。
2025-08-09 14:17:47
992
原创 数据结构4----LinkedList与链表
LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节 点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。
2025-08-01 14:17:30
899
原创 数据结构3--ArrayList与顺序表
线性表是一种在实际中广泛使用的数据结 构,常见的线性表:顺序表、链表、栈、队列... 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物 理上存储时,通常以数组和链式结构的形式存储。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。原因是list3.set( )拿的是list1的地址,所以list1也会改变。缺点:添加元素效率太低,删除效率也低,因为要移动后面的所有元素。扩容的时候按1.5倍扩容,容易造成资源的浪费。
2025-07-21 22:45:49
294
原创 认识异常与自定义异常类
Java 中虽然已经内置了丰富的异常类, 但是并不能完全表示实际开发中所遇到的一些异常,此时就需要维护符合我 们实际情况的异常结构.比如实现用户登录功能if (!if (!System.out.println("登陆成功");
2025-07-19 13:39:31
554
原创 String类
字符串常量池:堆中会有一个常量池,存储双引号 印出来的字符串(这个池子就是存的是字符串常量值),1.它=看常量池是否存在当前字符串,2.没有则存进去,3有,则获取这个字符串在常量池当中的地址。int lastIndexOf(int ch, int fromIndex) 从fromIndex位置开始找,从后往前找ch第一次出现的位置,没有返 回-1。int indexOf(int ch, int fromIndex) 从fromIndex位置开始找ch第一次出现的位置,没有返回-1。
2025-07-18 17:59:48
806
原创 数据结构2---包装类与简单认识泛型
泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。方 法 限 定 符 < 类 型 形 参 列 表 > 返 回 值 类 型 方 法 名 称 ( 形 参 列 表 ) { ... }示例1:上面代码可改为一样可以运行示例2:静态方法。
2025-07-16 10:25:00
823
原创 内部类与外部类
当一个事物内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又为外部事物提供服务,那么这个内部的完整结构最好使用内部类,在java中,可以将一个类定义在另一个类或者一个方法的内部,前者叫作内部类,后者叫作外部类。而当val结果进行修改时,就会报错,原因:默认在匿名内部类只能访问的是 被final修饰,在匿名类内部 能够访问的是没有被修改过的数据。②当内部类和外部类数据成员一样的时候,优先访问内部类成员,要访问外部类成员同名成员,则需要 :外部类名.this.同名成员 来访问。
2025-05-10 14:55:32
391
原创 抽象类和接口
即所有类的对象都可以使用Object类的引用来接收。在面向对象概念中,所有的对象都是用类来描述的,但是反过来并不是所有的类都是用来描述对象的,当一个类中没有足够的信息来描绘一个具体对象,这样的类就是抽象类。继承表达的含义是“is a”语义,而接口表达是具有xxx特性,就像这个代码,狗是动物,它会游泳和跑步,鸟是动物,它会飞和跑步,机器人会跑步。(3).抽象类是不可以被实例化的,抽象类的作用就是被继承,.当一个普通类继承了一个抽象类,这个普通类一定要重写这个抽象类当中所有的方法。
2025-04-26 22:37:31
772
原创 继承和多态(2)
分析:在main函数中发生了向上转型,并且通过父类引用 调用了父类 和 子类重写的方法,结果是调用了子类的方法,这个过程叫作 运行时绑定 或者 动态绑定。子类和父类有重名的覆盖方法:即子类和父类的eat方法名称一致,参数个数以及参数类型一致,返回值一致,这就是方法覆盖/重写。动态绑定:后期绑定,即在编译时,不能确定方法的行为,需要等到程序运行时,才能够确定具体调用哪个类的方法。解释结果:说明我们通过动态绑定,可以通过父类的对象 调用子类与父类方法覆盖的 在子类中的方法。
2025-04-16 15:47:09
997
原创 继承和多态(1)
System.out.println(name+"正在喵喵");System.out.println(name+"正在旺旺");cat.name="阿花";cat.colour="黄色";dog.name="阿旺";dog.colour="黑色";
2025-04-07 23:05:06
881
原创 有趣的题目
又因为是打印无符号整型,所以认为上述补码是无符号的(相当于正数)因为char类型大部分的时候是有符号的所以进行整型提升补1。打印有符号整数,上面的补码表示正数,正数的原反补码一样。打印的是有符号位的整数,所以打印上述(负数)的源码。所以相当于是存储了-128,所以结果与第三题一样;char类型所能表达值的范围是127~ -128。因为是unsigned类型所以整型提升补0;由于是有符号的char类型,整型提升补1;又因为是char类型的,取后面八位。为char类型取后八位。所以源码反码补码一样。
2024-11-16 12:43:39
482
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人