自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 贪心算法习题

又名贪婪算法,再对问题求解时,总是做出在当前看来是最好的选择。也就是说不从整体考虑,算法得到的是某种意义上的局部最优解。

2024-12-21 16:24:57 245

原创 前缀树-字典树

又称单词查找树,trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计、保存和排序大量的字符串(不仅限于字符串)。所以经常被搜索引擎系统用于文本词频统计。:利用字符串的公共前缀来减少查询时间,最大限度的减少无谓的字符串比较,查询效率比哈希树高。搜索以某个字符串为前缀的有多少个。

2024-12-12 15:44:33 218

原创 算法导论-第十章课后题

说明每个元素在只使用一个指针x.np的情况下实现双向链表。假如所有的值都可视为k位的整型值,且定义x.np = x.pre xor x.next,NIL用0。实现search、insert、delete。并在o(1)的时间实现逆转。给出一个O(n)时间的非递归过程,实现一个含n个元素的单链表的逆转。要求除存储链表本身的所需空间外,该过程只能使用固定大小的空间。

2024-06-21 16:01:27 279

原创 算法导论-第八章课后题

问题:假设有一个n个元素的待排序序列,该序列由n/k个子序列组成,每个子序列有k个元素,给定子序列的每个元素都小于后继的子序列的所有元素,且大于前驱子序列的所有元素,对于这个序列,证明排序所需比较次数的下界是。问题:设计一个算法,它能对于任意给定的0到k之间的n个整数先进行预处理,然后在O(1)的时间内回答输入的n个整数中区间[a,b]存在多少个。X=1是一个正面朝上,一个正面朝下,概率为1/2;答案:如果某种输入想要达到线性运行时间,那么它对于决策树中的叶节点的深度为n,这样叶节点的数量不会超过。

2024-05-17 10:54:14 725 1

原创 05-线性时间排序

里的常数因子是不同的。同理也可得出给定一个b位数和任何正整数r<=b,使用稳定的排序算法对数据取值区间为0-k的输入进行排序耗时O(n+k),那么就可以在O(最后一个循环中,倒序遍历a数组的原因是:相同元素的在输出数组中的相对次序与它们在输入数组中的相对次序是一致的。基数排序引用了计数排序,假设n个d位数的元素存放在数组中,其中l是最低位,d是最高位,从l到d依次对每个位数进行计数排序。给定n个d位数,其中每一位有k个可能的取值,如果每个位数的排序耗时O(n+k),d位数,则耗时O(d(n+k))。

2024-04-30 17:44:35 494 1

原创 算法基础-渐近记号

但是不是所有的函数都能渐近比较的,对于两个函数f(n)和g(n),也许f(n) = O(g(n))和 f(n) =f(n) = O(g(n)) 且 g(n) = O(h(n)),那么 f(n) = O(h(n))。,使得足够大的n,函数f(n)能够"夹入"c1g(n)和c2g(n)之间,则f(n)属于。,函数f(n)在一个常量因子内等于g(n),所以g(n)是f(n)的一个。扔掉低阶项后得出f(x) =f(n) = O(g(n)) 当且仅当 g(n) =f(n) = o(g(n)) 当且仅当 g(n) =

2024-02-05 11:38:15 1336 1

原创 04-排序算法应用场景

升级版:给定一个数组,和一个数num,要求小于num的数在数组的左边,等于num的数在中间,大于num的数在数组的右边。已知一个几乎有序的数组,几乎有序是指数组排好序后,每个元素的移动距离不超过k位置,并且k相对于数组来说很小,请选择一个合适的排序算法进行排序。描述:给定一个数组,和一个数num,要求小于num的数在数组的左边,大于num的数在数组的右边。数组[7,5,6,4],逆序对有 (7, 5), (7, 6), (7, 4), (5, 4), (6, 4):第二种方式代码比较简洁。

2024-01-29 18:20:49 452

原创 01-排序算法

堆排序算法的思想是:构建一个最大堆,然后把最大的元素跟最后一个元素互换后,把堆的节点数量减1,然后剩下的节点执行heapfipy,重复上面过程完成排序。(二叉)堆是一个数组,它可以被看成是一个近似的完全二叉树,二叉堆分为两种形式,最大堆和最小堆,最大堆是指父节点大于等于子节点,最大堆的最大元素在根节点。思想:比较相邻的两个数,左边的数大于右边的数则交换,遍历完最大的数会在最后一个位置,接下来第二遍遍历的长度减1,依次比较相邻的两个数并交换,以此类推。(1),和以i为根节点的子树的方法运行时间。

2024-01-29 18:20:43 909

原创 03-快速排序时间复杂度论证

证明过程中涉及到一些数学公式,表示连加求和,i 表示的就是E(X)是数学期望,也表示均值,离散型随机变量E(X) =代表具体值,该值出现的概率)。快速排序的时间依赖于划分是否平衡,而划分是否平衡依赖于划分的元素,如果划分是平衡的,则性能跟归并排序一致,如果划分不平衡,则性能接近插入排序。

2024-01-12 14:32:51 1380 1

原创 02-master公式

naster公式是用来计算中一样的时间复杂度。公式:T(N)=a∗T(​)+O(其中a为生成的子问题数,b为每次递归是母问题的的数据规模,N为母问题的数据规模,d为除了子问题外的操作。

2024-01-03 17:06:23 601 1

原创 01-执行引擎

执行引擎是java虚拟机核心的组成部分之一“虚拟机”是相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面的,而虚拟机的“执行引擎”是有软件自行实现的,因此可以不受物理条件制约的定制指令集与执行引擎的结构体系,能够执行那些不受硬件支持的指令集格式。JVM的主要任务是负责装载字节码到内部,但字节码不能直接运行在操作系统上,因为字节码指令不等同于本地机器指令,它内部包含的仅仅只是一些能被JVM所识别的字节码指令、符号表以及辅助信息。

2023-11-01 15:43:55 120 1

原创 【spring源码学习】目录

1、Spring Core(核心容器)spring-core:IOC和DI的基本实现 spring-beans:BeanFactory和Bean的基本装配 spring-context:Spring context上下问,即IOC容器 spring-expression:spring表达式语言2、Spring Aopspring-aop:面向切面编程的应用程序 spring-aspects:集成aspectj,AOP应用框架 spring-instrument:动态Class Loadi

2023-08-21 14:52:16 102 1

空空如也

空空如也

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

TA关注的人

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