自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java数据结构10-Map和Set

虽然哈希表一直在和冲突做斗争,但在实际使用过程中,我们认为哈希表的冲突率是不高的,冲突个数是可控的,也就是每个桶中的链表的长度是一个常数,所以,通常意义下,我们认为哈希表的插入/删除/查找时间复杂度是O(1)。首先,我们需要明确一点,由于我们哈希表底层数组的容量往往是小于实际要存储的关键字的数量的,这就导致一个问题,冲突的发生是必然的,但我们能做的应该是尽量的降低冲突率。选择一个随机函数,取关键字的随机函数值为它的哈希地址,即H(key) = random(key),其中random为随机数函数。

2024-07-05 23:51:16 657

原创 Java数据结构9-排序

快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序时间复杂度:O(N*logN)空间复杂度:O(logN)稳定性:不稳定归并的缺点在于需要O(N)的空间复杂度,归并排序的思考更多的是解决在磁盘中的外排序问题。时间复杂度:O(N*logN)空间复杂度:O(N)稳定性:稳定。

2024-07-05 04:51:25 623

原创 Java数据结构8-优先级队列(堆)

Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,本文主要介绍PriorityQueue。使用时必须导入PriorityQueue所在的包,即:PriorityQueue中放置的元素必须要能够比较大小,不能插入无法比较大小的对象,否则会抛出ClassCastException异常。

2024-07-03 23:29:45 880

原创 Java数据结构7-二叉树

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。注意:树形结构中,子树之间不能有交集,否则就不是树形结构。

2024-07-01 00:08:46 795

原创 Java数据结构6-栈与队列

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。

2024-06-30 03:14:16 834

原创 Java数据结构5-链表2

LinkedList的底层是双向链表结构(链表后面介绍),由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。在集合框架中,LinkedList也实现了List接口,具体如下:【说明】LinkedList实现了List接口LinkedList的底层使用了双向链表LinkedList没有实现RandomAccess接口,因此LinkedList不支持随机访问。

2024-06-26 02:00:21 617

原创 Java数据结构4-链表

由于其底层是一段连续空间,当在ArrayList任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后搬移,时间复杂度为O(n),效率比较低,因此ArrayList不适合做任意位置插入和删除比较多的场景。因此:java集合中又引入了LinkedList,即链表结构。

2024-06-24 04:07:58 287

原创 Java数据结构3

在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:ArrayList是以泛型方式实现的,使用时必须要先实例化ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问ArrayList实现了Cloneable接口,表明ArrayList是可以clone的ArrayList实现了Serializable接口,表明ArrayList是支持序列化的。

2024-06-23 16:20:58 841

原创 Java数据结构2

在集合框架中,List是一个接口,继承自CollectionCollection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示:Iterable也是一个接口,表示实现该接口的类是可以逐个元素进行遍历的,具体如下:站在数据结构的角度来看,List就是一个线性表,即n个具有相同类型元素的有限序列,在该序列上可以执行增删改查以及变量等操作List中提供了好的方法,具体如下:方法解释尾插 e将 e 插入到 index 位置尾插 c 中的元素删除 index 位置元素。

2024-06-13 11:25:56 934

原创 Java数据结构1

数据结构是计算机存储、组织数据的方法,指相互之间存在一种或多种特定关系的数据元素的集合

2024-06-05 08:49:49 683

原创 Java简易图书管理系统

总的来说,这段代码构建了一个图书管理系统的基础框架,其中AdminUser类用于管理员对图书进行各种管理操作。然而,具体的功能实现可能需要依赖其他部分的代码以及IOperation接口的具体实现。最重要的是利用接口实现多种类的互动。抽象和封装BookList类和User类都对相关的概念进行了抽象和封装。BookList类封装了图书列表的管理功能,而User类抽象了用户的基本特征和行为。继承AdminUser类继承自User类,继承了User类的属性和方法,并可以通过重写menu。

2024-03-10 02:48:10 837 1

原创 多态、抽象类和接口

多态是面向对象编程的核心特性之一,它允许一个接口对应多个实现,从而提高代码的复用性和可维护性。在Java中,多态主要通过继承和接口实现,通过多态,我们可以更好地组织代码,提高代码的可扩展性。定义:抽象类是一种不能被实例化的类,它存在的目的是为了被继承。它可以包含抽象方法和非抽象方法。抽象方法:抽象方法是一种没有实现体的方法,它只有声明,没有方法体。抽象类中可以包含抽象方法,但是抽象类中也可以包含非抽象方法。继承:子类继承自抽象类时,必须实现抽象类中的所有抽象方法,除非子类本身也是抽象类。使用场景。

2024-03-04 05:58:45 859 1

原创 Java类与对象

Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。面向对象编程的关键概念包括对象、类、封装、继承和多态。对象(Object):对象是面向对象编程中的基本单位,它是现实世界中实体的抽象表示。对象包含属性(数据)和行为(方法)。

2024-03-01 20:46:02 752 1

原创 Java8种基本数据类型

在编程语言中,字面常量(Literal Constants)是直接在代码中出现的固定值,它们代表了自身的值,不依赖于任何计算。Java中的字面常量主要包括数值常量、字符常量、字符串常量、布尔常量等。:直接表示数值的常量。它们可以是整数(如123)、浮点数(如123.45)、长整型(在数值后加L或l,如123L)、双精度类型(在数值后加D或d,如123.45D),或者是十六进制(以0x或0X开头,如0xFF)、八进制(以0开头,如077)和二进制(以0b或0B开头,如0b1010。

2024-02-01 20:28:26 1032 1

原创 C语言的编译和链接

C语言是一种广泛使用的编程语言,它的特点之一是与底层的硬件和操作系统交互密切。为了将C语言代码转化为可执行程序,需要经历编译和链接两个重要的步骤。本篇博客将深入探讨C语言编译和链接的过程,以帮助开发者更好地理解这些关键概念。

2024-01-30 21:48:04 827 1

原创 C语言文件操作入门

磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。

2024-01-30 21:18:37 819 1

原创 C语言-结构体

而对齐的内存访问仅需要一次访问。自引用结构体不能直接包含其自身的实例,因为这会导致无限大小的结构体,但它们可以包含指向相同类型的结构体的指针。因此,不能将一个结构体类型的地址赋给另一个不同结构体类型的指针,即使这两个结构体在实际布局上是相同的。如果传递⼀个结构体对象的时候,结构体过⼤,参数压栈的的系统开销⽐较⼤,所以会导致性能的下降。4.如果嵌套了结构体的情况,嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处,结构。使用的是不同的匿名结构体类型(即使它们的字段相同),它们在C语言中被视为不同的类型。

2023-12-03 03:33:17 893 1

原创 C语言-整数和浮点数在内存中存储

理解整数和浮点数在计算机内存中是如何存储的,对于深入了解计算机科学和编程是非常重要的。这种理解有助于我们更好地掌握数据的处理、存储和优化。

2023-12-02 00:11:12 927 1

原创 C语言-字符函数和字符串函数(库函数)的模拟实现

函数用于计算C字符串(以空字符 结尾的字符数组)的长度,不包括结尾的空字符。使用:模拟实现: 的使用和模拟实现 函数用于复制一个字符串到另一个字符串,包括结束的空字符。使用:模拟实现: 的使用和模拟实现 函数用于将一个字符串追加到另一个字符串的末尾。使用:模拟实现: 的使用和模拟实现 函数用于比较两个字符串。如果第一个字符串在字典序上小于第二个,则返回负值;如果两个字符串相等,则返回0;如果第一个字符串大于第二个,则返回正值。模拟实现:在模拟实现

2023-12-01 23:13:02 792 1

原创 C语言-深入指针

你可以通过在声明时使用两个星号来定义一个二级指针。例如,

2023-12-01 22:40:13 838 1

原创 C语言-操作符详解

C语⾔已经提供了内置类型,如:char、short、int、long、float、double等,但是只有这些内置类型还是不够的,假设我想描述学⽣,描述⼀本书,这时单⼀的内置类型是不⾏的。8进制的数字每⼀位是0~7的,0~7的数字,各⾃写成2进制,最多有3个2进制位就⾜够了,⽐如7的2进制是111,所以在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算⼀ 个8进制位,剩余不够3个2进制位的直接换算。:如果操作数的类型不同,则转换会发生在较小的类型上,使其与较大的类型兼容。

2023-11-09 03:55:10 71 1

原创 C语言-递归

递归是编程中的一种基本而强大的概念,它允许函数调用自身来解决问题。在C语言中,递归提供了一种优雅的解决复杂问题的方法,尤其是在处理分治策略和数据结构如树和图时。本文将介绍递归的概念,展示如何在C语言中实现递归,以及递归的优缺点和使用时的注意事项。一、递归的基本概念1. 递归定义递归中的递就是递推的意思,归就是回归的意思递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。2. 递归的工作原理递归的工作原理基于函数自我调用来解决问题。

2023-11-04 05:18:35 42 1

原创 扫雷游戏及代码(C语言)

按1开始游戏,按0退出游戏,按其他的键要重新输入。菜单函数无返回值,需在主函数中使用scanf函数来实现。使用do-while循环可以做到至少运行一次菜单。 当输入1时调用game函数,开始游戏。当输入0时break跳出do-while循环。当输入其他内容时,input不为0,while循环继续,重新开始输入。扫雷是大家都耳熟能详的游戏了,就不过多的介绍了简单来说就是:找到雷区中的所有不是地雷的格子,而不许踩到地雷。点开的数字是几,则说明该数字旁边的8个位置中有几个雷,如果挖开的是地雷,则会输掉游戏。

2023-10-30 00:13:30 90

原创 C语言-分支循环语句

if 语句只能控制⼀条语句,如果我们要if语句同时控制2条或以上语句,就要使⽤ {} 将代码括起来, else 后也可以跟上⼤括号。

2023-10-22 23:10:10 25

原创 C语言学习计划与展望

我是坠落,是一名大二的学生。在认识到学校的知识无法满足需要的时候准备自学C语言,数据结构,计算机网络等等与未来工作息息相关的技能与知识。

2023-10-11 00:23:42 53

原创 C语言学习笔记01

C语⾔把 .c 为后缀的⽂件称为源⽂件,把 .h 为后缀的⽂件称为头⽂件。

2023-10-08 22:07:15 36 1

空空如也

空空如也

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

TA关注的人

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