- 博客(48)
- 收藏
- 关注
原创 七大基于比较的常见排序算法
2.在partition这个函数中 array[right ]>= array[pivot] 与 array[left] <= array[pivot], 这两个条件, 必须带等号吗?4.但是当 maxIndex == left 时, 最小值交换后会导致 left 的值发生改变, 所以需要特殊处理, 把 maxIndex 改为 minIndex。1.时间复杂度:O(N^2) 最好情况(顺序排列)能达到O(N)1.时间复杂度:O(N^1.25 至 1.6N^1.25)1.时间复杂度:O(N^2)
2025-10-17 00:42:05
578
5
原创 算法奇妙屋(六)-哈希表
提议十分简单,即求两数之和等于目标值的下标,并且下标不能出现两次。这里的算法原理十分简单, 用set模拟哈希表即可快速解决。相比于上一道题只是增加了下标的差值<=k这个条件。这道题比较简单, 具体看题意即可。
2025-10-14 00:04:29
568
7
原创 算法奇妙屋(五)-链表
这道题目就是把多个有序链表连接成一个, 这里不过多赘述题意, 直接上算法原理。的解法思路类似,只是把对两个数组合并的过程变成了两个链表合并。这里可以用优先级队列, 通过建立小根堆的方法来进行链接。题目意思是每k个节点进行逆序,不满足k个节点的不逆序。
2025-10-11 23:34:19
634
9
原创 算法奇妙屋(四)-归并分治
我们要注意,这道题里面的测试用例输入数组中的所有数字都在32位整数的表示范围内, 但是我们×2后那么就会超出32位, 所以我们用除以2的方式。归并排序我们应该不陌生, 这里我们只是复习归并排序的算法原理。题目意思大白话解释就是前面有多少数大于后面数值的2倍。
2025-09-30 00:07:24
488
10
原创 算法奇妙屋(一)-位运算
1.先全部异或得到数字 num, 得到的该数字然后计算二进制第一个 1 的位置 x, 得到该x是为了确定这两个单身数字二进制的第一个不同位置, 然后按照该位置二进制不同值来分组, 为 0 一组, 为 1 的一组, 这两个不同数字肯定在不同组, 最后分别异或两组, 即可求出这两个单身数字。根据位图思想, 结合下方图示算法, 可以看出当该单身数二进制的某一位置为 0 时, 磨上 n 也为0 , 为 1 时 磨上 n 仍为 1, 然后将该数写到位图中, 写满32个比特位, 得到的数字就是要找的单身数字。
2025-09-12 00:40:40
607
10
原创 Git详解
先在本地master和dev分支pull一下, 获取到当前远程仓库最新代码, 然后在本地master合并到dev, 如果有冲突解决合并冲突, 解决完冲突后然后dev合并到master上, 最后master推送给远程仓库的origin/master中。5.hotfix分支, 补丁分支后bug修复分支, 基于master分支创建, 修复完成后合并到master和develop分支上, 并推送远程, 一旦上线后就删除。
2025-09-09 01:06:43
1262
8
原创 多线程(六) ~ 定时器与锁
定时器这个概念在生活十分常见, 例如早上你定了三个闹钟来催你起床, 一个闹钟可能叫不醒你, 那第二天早上三个闹钟就会在对应时间段依照你定义的时间先后顺序响起, 而在软件开发中定时器也是一个很重要的概念, 你想安排一个程序什么时候运行, 等待一段时间再运行, 想让有的任务先执行等等…
2025-09-06 22:55:50
843
5
原创 多线程(五) ~ 阻塞队列与线程池
什么是阻塞队列?答: 阻塞队列是⼀种特殊的优先级队列. 也遵守 “先进先出” 的原则, 阻塞队列也有两个特性,当队列满的时候, 继续⼊队列就会阻塞, 直到有其他线程从队列中取走元素当队列空的时候, 继续出队列也会阻塞, 直到有其他线程往队列中插入元素为什么要用阻塞队列?答: 当客户端与服务器直接交互时, 如果遇到用户请求高峰期, 大量的请求会直接涌入服务器, 直接处理大量请求数据可能会把服务器搞挂掉, 那么这时就需要一个缓冲器来缓解这种特殊情况阻塞队列是可以循环使用的且不能扩容的, 我们把它设计成。
2025-08-04 13:30:50
759
3
原创 多线程(三)-线程安全原因与解决
这道题是典型的哲学家就餐问题, 三个哲学家三根筷子, 但吃饭需要两根筷子且只能拿最近的两双筷子, 他们如果同时拿尝试获取两根筷子, 这时候胡不想让就会阻塞, 于是我们可以换种思路, 让第一个人先拿第一根筷子, 让第二个人先拿第二根筷子, 以此类推, 但是最后一个人要先尝试拿第一根筷子, 拿不到先等待, 这时候, 倒数第二个人可以趁机获取到最后一根与前一根筷子, 从而完成就餐, 整个问题迎刃而解!保了, 他是一定会改变的, 给他一次机会, 请JVM高抬贵手放弃优化该变量的去读操作吧!
2025-08-03 09:00:00
828
1
原创 多线程(二) ~ 线程核心属性与状态
1. Java中线程等待函数时join2. 线程1调用join,线程1就是被等待的线程,要等到线程1结束后才能结束进程3. join可以设置等待时间,在设定的等待时间结束后,不论线程1是否完成任务,都不再等待,结束进程4. join会抛出一个InterruptedException异常1. Java中休眠方法是sleep2. sleep方法是静态方法,可以直接用Thread调用3. 调用sleep方法会抛出InterruptedException异常线程还未创建的状态,没调用start。
2025-08-02 19:16:38
884
原创 多线程(一) ~ 进程与线程的区别
计算机的基本结构冯诺依曼体系结构冯诺依曼体系结构是现代计算机的基础架构,由数学家冯·诺依曼于1945年提出,其核心包括二进制逻辑、程序存储执行及计算机五大组成部分(运算器、控制器、存储器、输入设备、输出设备)。在操作系统中一段程序运行起来就叫做进程进程的属性由进程控制块PCB组织起来,是一个很大的结构体,这是因为大多操作系统是由C语言写的进程是操作系统资源分配的基本单位。
2025-08-02 19:15:07
919
原创 栈与队列(堆)的泛型实现
栈在计算机学习中是一种重要的数据结构,拥有先进后出, 只在固定的的一端进行插入和删除操作, 插入数据在栈顶, 删除数据也在栈顶内存管理:系统栈作为CPU与内存交互的媒介,存储临时数据和指令地址虚拟机执行:JVM的栈帧存储局部变量表和操作数栈,支持字节码执行文档撤销操作: 编辑软件(如Word、Photoshop)将用户操作记录存入栈,每次撤销时按反向顺序撤回最近的修改,支持多级撤销…弹匣装弹时, 开出去的第一发子弹永远是最后加入弹匣的那颗。
2025-08-01 13:35:15
883
2
原创 数据结构2-集合类ArrayList与洗牌算法
54张扑克牌,1~13,每张花色不同,外加小王与大王。通过设置随机数,从末尾开始来交换,来达到洗牌目的。一张扑克牌上的属性有。
2025-07-25 17:37:08
1049
原创 图书系统(新)
每次程序运行时都实例化一个对象,不管是否用到,先确保该对象是存在的,即饿汉式单例模式当需要该类对象的时候,通过类主体来调用静态方法获取该对象并且实例化,而不用时则不会实例化该对象码云链接:https://gitee.com/jinghua-c/project。
2025-07-18 15:51:38
1111
原创 抽象类与接口
已知在Java中不支持类的多继承,所以要想具备多个类的功能,接口就诞生了接口用interface修饰实现comparable接口中要重写compareTo方法,又因为compareTo只有一个参数,所以是用在需要比较的类当中实现comparable接口来进行比较的实现comparator接口要实现compare方法,该方法有两个参数,因此是定义在需要比较的类的外面的。
2025-07-13 17:47:32
961
原创 类与对象详解
类,是对一类事物的抽象描述,可以类比为设计图类当中有成员变量(属性)和成员方法,其中又细分为静态与非静态//成员变量//成员变量//成员变量//成员方法对象,是对类的具体实现,根据类创建的高楼构造方法的特征是没有返回值,方法名与类名相同我们不难发现当我们在类当中new一个对象的时候,new关键字背后都会调用一个方法,那这个方法是什么呢?答:这个方法调用的是类的无参数构造方法(一般是Java默认给出)包也可称为文件夹。
2025-05-30 18:56:38
1816
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅