自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 二叉搜索树

搜索效率高,一次能砍掉一半,最好的情况:O(logN),最坏的情况:O(N)

2024-05-05 21:01:59 164

原创 排序算法(3)

排序算法最好平均最坏空间复杂度稳定性插入排序O(n)O(n^2)O(n^2)O(1)稳定选择排序O(n^2)O(n^2)O(n^2)O(1)不稳定冒泡排序O(n)优化下O(n^2)O(n^2)O(1)稳定希尔排序O(n^1.3)O(n^2)O(1)不稳定堆排序O(1)不稳定快速排序O(n^2)不稳定归并排序O(n)稳定。

2024-05-03 20:25:21 745

原创 排序算法(2)快排

思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。快排还是更快一些,因为时间复杂度是粗略估计的,实际上堆排是kn*logn,最后都把k给去掉了,快排有可能是2logn,堆排是3logn。时间复杂度:最坏情况下O(N^2),如果是均匀分割下复杂度优化后趋于n*logn,快排一般用于乱序。如果先走左边导致最后相遇的地方是比基准大的数据,交换完后,会把大的放到了前面,不满足快排思想。

2024-04-28 21:20:34 747 1

原创 排序算法(1)

1. 堆排序使用堆来选数,效率就高了很多。2. 时间复杂度:O(N*logN)3. 空间复杂度:O(1)4. 稳定性:不稳定。

2024-04-28 05:00:00 1749

原创 java优先级队列(堆)详解

1、优先级队列的构造(无构造器)构造器功能介绍创建一个空的优先级队列,默认容量是11创建一个初始容量为initialCapacity的优先级队列,注意: initialCapacity不能小于1,否则会抛IllegalArgumentException异 常用一个集合来创建优先级队列//堆是队列实现的,叫优先级队列,数组实现//结果是5 所以默认是小根堆,也可以改为大根堆,以后讲//PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的。

2024-04-21 22:31:25 1094

原创 Java二叉树(2)

4.某二叉树的后序遍历序列与中序遍历序列相同,均为 ABCDEF ,则按层次输出(同一层从左到右)的序列为()Node right;// 右孩子的引用,常常代表右孩子为根的整棵右子树。Node right;// 右孩子的引用,常常代表右孩子为根的整棵右子树。Node left;// 左孩子的引用,常常代表左孩子为根的整棵左子树。Node left;// 左孩子的引用,常常代表左孩子为根的整棵左子树。// 当前节点的根节点。是通过一个一个节点引用起来的,常见的表示方式有二叉三叉。

2024-04-11 20:22:12 551

原创 Java 二叉数(1)

1. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为( )已知父亲节点下标是i,左孩子:2*i+1,右孩子:2*i+2(前提:孩子节点序数小于n):若一个结点含有子结点,则这个结点称为其子结点的父结点 如上图:A是B的父结点。:一个结点含有的子树的根结点称为该结点的子结点 如上图:B是A的孩子结点。:节点的相对位置,如上图:B的深度是2,E的深度是3,J的深度是4。2. 若规定只有根结点的二叉树的深度为1,则深度为K的二叉树的。

2024-04-10 23:06:10 1070

原创 java栈和队列

/入栈//出栈//获取个数//获取栈顶元素但是不删除//判断是否为空//isEmpty是vector的方法。

2024-04-10 00:26:58 520

原创 Java单链表和LinkedList的实现

LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。LinkedList实现了List接口LinkedList的底层使用了双向链表LinkedList没有实现RandomAccess接口,因此LinkedList不支持随机访问LinkedList的任意位置插入和删除元素时效率比较高,时间复杂度为O(1)LinkedList比较适合任意位置插入的场景。

2024-04-07 23:42:37 513

原创 Java认识泛型类

一般的类和方法,只能使用具体的类型: 要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。----- 来源《Java编程思想》对泛型的介绍。泛型是在JDK1.5引入的新的语法,通俗讲,泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。总的来说泛型主要做的是把类型参数化,意味着可以传指定的类型参数在定义泛型类时,有时需要对传入的类型变量做一定的约束,可以通过类型边界来约束。...

2024-03-29 00:53:14 825 1

原创 Java:ArrayList详解

在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:不带参数 没有初始化,默认为空,只是一个数组引用常量数组,没有分配内存,长度是0 因此不带参数的构造并没有给数组大小 带参数初始化数组大小如果参数是0的情况下,就会是空数组如果是参数小于0就会抛出异常 另一个带一个参数的构造方法参数Collection是一个接口,只要是实现了该接口的都可以进行传递尖括号里的‘?’是通配符,尖括号里面可以写E或者E的子类举例: ArrayList实现了Collection接口,array

2024-03-28 00:48:27 661 1

原创 Java异常

程序先执行 try 中的代码如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配.如果找到匹配的异常类型, 就会执行 catch 中的代码 如果没有找到匹配的异常类型, 就会将异常向上传递到上层调用者.无论是否找到匹配的异常类型, finally 中的代码都会被执行到(在该方法结束之前执行).如果上层调用者也没有处理的了异常, 就继续向上传递.一直到 main 方法也没有合适的代码处理异常, 就会交给 JVM 来进行处理, 此时程序就会异常终止.

2024-03-27 20:45:55 571

原创 Java内部类

当一个事物的内部,还有一个完整的结构进行描述,而这个内部类的完整结构体又只为外部事物提供服务,那么这个内部的完整结构最好使用内部类。在实例内部类方法中访问同名的成员时,优先访问自己的,如果访问外部类同名成员,必须:外部类名.this.同名成员来访问。在静态内部类中,不能访问外部类的非静态成员,需要new外部类的对象后再进行访问。外部类中,不能直接访问实例内部类中的成员,如果要访问必须先要创建内部类对象。实际开发经常使用,因为和实例内部类相比,少一个外部类的实例化对象。局部内部类(一般不会涉及)

2024-03-22 21:44:42 256 1

原创 java图书管理系统

分三个包,分别存放了使用者的信息,书籍信息,以及进行的操作方法。

2024-03-16 18:57:11 530 1

原创 Java String类中的方法

boolean equals(Object anObject) 方法:按照字典序比较(字符大小的顺序。先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值。3、str里会存放value、coder、hash、hashIsZero。(3)、如果有,就不重复存储,取出现有的对象即可。(1)、先检查这个内存(字符串常量池)有没有这个字。1、String是引用类型,内部并不存储字符串本身。(2)、如果没有,存进去。: 按照字典序比较(字符大小的顺序。1、==比较是否引用同一个对象。

2024-03-14 23:42:50 349

原创 Java接口详解

2、接口中的成员方法默认是public abstract修饰,不写也是抽象方法,所以不能具体实现,除了两种(被default修饰和static修饰的方法,后文介绍)在Java中,类和类之间是单继承的,一个类可以实现多个接口,接口与接口之间可以多继承。即:用接口可以达到多继承的目的。在Java中,类和类之间是单继承的,一个类只能有一个父类,即Java中不支持多继承,但是一个类可以实现多个接口。接口的定义格式与定义类的格式基本相同,将class关键字换成 interface 关键字,就定义了一个接口。

2024-03-09 23:29:40 1169

原创 Java抽象类详解

5、如果一个普通类A继承了一个抽象类不想重写这个抽象类的方法,此时可以把这个普通类A改为抽象类,但是如果A再次被继承 ,不仅要重写A自己的抽象方法,也要重写A继承的抽象方法。一个类如果被 abstract 修饰则称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。注意:抽象类也是类,内部可以包含普通方法和属性,甚至构造方法,没有抽象方法,这个类也可以被写为抽象类。在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,

2024-03-09 10:25:55 367

原创 C语言:基于单链表实现的泊车管理系统

(7)计费模块:用于取车时根据车辆停泊时间自动计算费用,小轿车 5元/小时,(3)入库模块:用于停车时录入汽车停泊信息,如车牌号、)汽车停泊信息管理:车牌号、停泊位置、停泊开始时间。(5)展示模块:用于为车主提供车位信息,选择车位。(6)查询车辆信息管理:车辆是否入库,车辆出库。(6)查找模块:用于通过车牌号查找车辆信息。(4)删除模块:用于出库时删除车辆信息。源文件 ParkingTest.c。(9)状态模块:用于修改车位状态。(2)信息保存模块:用于保存。(8)出库模块:用于车主出库。

2024-03-07 07:27:01 514 1

原创 Java多态详解

1、静态方法不能被重写2、被private修饰的放法不能被重写3、被final修饰的方法(密封方法)不能被重写4、如果方法被重写,子类的权限要大于等于父类的权限5、方法返回值可以不同:前提是返回值构成父子关系两者构成了协变类型方法的重载是一个类的多态性表现,方法的重写是子类父类的一种多态表现动态绑定在编译的时候确实是Animal的eat方法,但是运行的时候,调用了Dog的eat(),此时我们就把他叫动态绑定。

2024-03-06 13:41:36 1167 1

原创 Java继承详解

1、super只是一个关键字,提高了代码的可读性,不是引用,因为没有实例化对象,所以应理解成关键字 ,即this有对象,super无对象。之前讲过包,protected不仅可以在同包的同类或不同类中使用,还可以在不同包中的子类使用,是一种温和的中间方式。第二个包是Demo3,并且导入类test3,testDemo类继承test3的类,使用super.来接收父类的成员。super()用户不写也有,前提父类的构造方法是不带参数的,如果带参数了,就得用super( , , )

2024-03-05 20:21:46 923

原创 Java类和对象(2)

将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。举例说明:电脑这样的复杂设备,对于计算机使用者而言,不用关心内部核心部件,比如主板上线路是如何布局的,CPU内部是如何设计的等,用户只需要知道,怎么开机、怎么通过键盘和鼠标与计算机进行交互即可。因此计算机厂商在出厂时,在外部套上壳子,将内部实现细节隐藏起来,仅仅对外提供开关机、鼠标以及键盘插孔等,让用户可以与计算机进行交互即可。

2024-03-02 17:44:31 853 1

原创 Java类与对象(1)

面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。对象:真实存在的人或物类:就是用来描述这个实体(对象)的属性(外观尺寸等)和功能例如:描述洗衣机的类可以有属性:产品品牌,型号,产品重量,外观尺寸,颜色等功能:洗衣,烘干、定时....field;//字段(属性)或者成员变量method;//行为或者成员方法类名注意采用大驼峰定义成员前写法统一public。

2024-03-01 14:42:15 895 1

原创 程序编译和链接

库函数例如fread,这个库函数依赖libraries(库)包含LIBC.LIB、LIBCNIT.LIB、MSVCRT.LIB,这三个文件叫静态库,这些静态库里包含fread的相关信息,如果代码使用到了fread的函数,那么链接库就是链接这些库,这样可执行程序才能生成。3、开始执行程序代码。上面代码进行词法分析得到16个记号:array、[、index、]、=、(、index、+、4、)、*、(、2、+、6、)4、处理所有的条件编译指令,如: #if、#ifdef、#elif、#else、#endif。

2024-01-15 23:43:33 929 1

原创 C语言打印菱形简易版

从空格找规律实现简单打印菱形

2024-01-05 15:12:38 403 1

原创 动态内存题目分析

动态内存问题

2024-01-05 11:15:20 460 1

原创 结构体内存对齐

我们来看上面两个结构体,并且求出两个结构体所占空间大小。两个结构体里的成员类型一样,根据所学的数据类型大小我们会觉得两个结构体的大小一样,并且都是6。而在vs上的结果却与我们想的截然不同。为什么会出现这样的现象呢?因为我们把结构体成员放在了某一个对其的位置上,如果将其进行对其,就会浪费一些空间。因此实际开辟使用的空间比我们需要的要大。首先来看看对齐规则。

2023-12-21 21:29:22 991

原创 动态内存管理函数详解

情况2:原有空间之后没有足够大的空间直接进行空间扩大(可能会占用别的数据空间),在这种情况下,realloc函数会在内存的堆区重新找一块空间(满足新的空间的大小需求),同时会把旧的数据拷贝到新的空间,然后释放旧的空间,同时返回新的空间的起始地址。有时候我们发现过去申请的空间太小了,有时候我们又会觉得申请的空间过大了,那为了合理的使用内存,我们⼀定会对内存的大小做灵活的调整。释放完,p指向的空间还给了操作系统,但是p里放的地址还是起始空间的地址,为了避免p成为野指针,所以最后会把p置为空指针。

2023-12-19 14:12:17 800

原创 数据存储易错题

1 -2 -3 ......-128 127 126......5 4 3 2 1 0 -1 -2 -3 ......-128 127 知道循环结束。补码(反码+1):11111111 11111111 11111111 11111111。当i等于0的时候再减1,就是32个全1,无符号整型,因此转化成十进制就是非常大的正数,最终是死循环。求字符串长度找\0,\0的ASCII码是0,其实就是找0。ptr1[-1]值是4,十六进制是0x00000004。

2023-12-11 23:03:31 948

原创 scanf的输入问题与解决办法

写作想法来源是我的朋友问我的scanf问题以及自己在写学校上机报告时也遇到了这个问题,就想拿出来分享一下。

2023-12-07 12:50:24 526 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除