自定义博客皮肤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)
  • 收藏
  • 关注

原创 线性时间选择

将 n 个元素,分成⌈n/5⌉组,取出每组的中位数(第三小的元素)取出⌈n/5]个中位数的中位数(Select函数可以取中位数)利用快排中的分解函数 Partition(),以所求中位数为基准,划分 a[p : r] 为两段。取其中一段进行递归。,即如果将这个n个元素依其线性序排列时,排在第k个位置的元素就是要找的元素,当k==1时,要找的就是最小的元素;当k==n,就是最大的元素;当k=(n+1)/2,称为中位数。线性时间选择算法的时间复杂度为O(n)。

2023-12-22 22:28:58 353

原创 第五章作业

对所有可到达的格子进行排序,判断1,每个可到达的格子的周围格子必须有一个格子的数字是与其连续的 2,结束的格子与结尾的格子必须是指定的格子。首先建立一个图数据结构,然后实现Dijkstra算法来找到最短路径树。之后,我们将实现回溯算法来找出最优的增压器设置方案。用一个一维数组an[n*n]代表n*n的方阵以取整(m/n)代表不同的形状、以取余(m%n)代表不同的颜色,利用回溯法。

2023-11-24 12:20:53 431 1

原创 哈夫曼编码

哈夫曼树:给定作为 n 个叶子结点,其各带 1 个权值(共 n 个),构造一棵二叉树,若该树的带权路径长度达到最小,则称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树的构造方式为自底向上构造,即先构造叶子节点,在构造父节点,最后构造根节点。如下图,用所给字符的权重构建一个二叉树,每个叶子节点代表一个字符,每个叶子节点的层数代表该字符的权重。在新的队列中找出最小的两个节点,构建成新的树,重复步骤,直到队列中只有一个节点。通俗的讲,哈夫曼编码就是出现得越多的内容编码越短 ,出现频率越少的内容编码越长。

2023-11-24 12:20:36 362 1

原创 0-1背包问题

按上述算法Knapsack计算后,m[1 ][c ]给出所要求的0-1背包问题的最优值。如果m[1 ][ c]=m[ 2][c ],则x1=0,否则x1=1,当x1=0时,由mm[ 2][c ]继续构造最优解。依次类推,可构造出相应的最优解(x1,x2,···,xn)。物品i的重量是wi,其价值为vi,背包的容量为C。(在选择装入背包的物品时,对每种物品i只有两种选择,即装入背包或不装入背包。时间复杂度:0-1背包问题的动态规划算法的时间复杂度为O(nW),其中n为物品数量,W为背包容量。

2023-11-24 12:20:16 443 1

原创 第四章作业

每次从最小的两个数相乘后的数值放到原来的数组中可能需要重新顺序,所以再用一个排序使新的数组变得有序,依次循环得到最大值。而求最小值时前边两个最大的数乘起来的数不可能会比后边小的数还要小,就不用每次排序。先对n个点排序,第一个点为起点,长度为k的闭区间进行覆盖,接下来遍历每个点时,判断能否与前面的点覆盖在一个区间长度内。在到达某个加油站时判断能否到达下一个加油站。

2023-11-17 11:44:02 41 1

原创 动态规划-凸多边形最优三角形

定义t[i][j],1<=i<j<=n为凸子多边形{Vi-1,Vi,…最优剖分包含三角形Vi-1VkVj的权,子多女性{Vi-1,Vi,…,Vk}和{Vk,Vk+1,…T[1][n]=min{t[1][k]+t[k+1][n]+w(V0VkVn)|1<=k<n}设退化的多边形{Vi-1,Vi}具有的权值为0,因为此刻够不成多边形。则T的权为3个部分权的和:三角形V0VkVn的权,子多边形{V0,V1,…对于点数大于3,循环遍历所有的划分方式,递归计算左右两侧的最小权值和,并计算当前划分下的权值和。

2023-11-17 11:43:38 44 1

原创 动态规划-图像压缩

图像压缩是指通过减少图像数据的存储空间,以实现图像文件的压缩和存储优化。

2023-10-17 21:24:42 172

原创 最邻近点对问题

给定平面上n个点,找其中的一对点,使得在n个点的所有点对中,该点对的距离最小。

2023-10-17 20:06:57 134

原创 快速排序算法

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据小,然后按此方法对这两部分分别进行快速排序,整个排序过程可以递归进行,以达到整个数据变成有序序列。4 重复第 2~3 步,直到 i 和 j 重合,将原数据分为两个子序列,左侧子序列都比 p 小,右侧序列都比 p 大。3 从左向右扫描,找大于 p 的数,如果找到,则r[i] 和 r[j] 交换,j--。,24,8,72,18,46,22,42,69 (第一个元素作为基准元素),69 (24<35,不变)

2023-10-07 19:59:54 112 1

原创 归并排序算法

归并排序是一种基于归并操作的有效排序算法。它采用了分治法的思想,将已有序的子序列不断合并,最终得到完全有序的序列。归并排序的算法思路是先将数组划分为两个子序列,然后对这两个子序列分别进行归并排序,最后将两个有序的子序列合并成一个有序的序列。为 O(n),需要额外的空间来存储归并过程中产生的临时数组。为O(nlogn),其中n为待排序序列的长度。

2023-10-07 19:59:44 110 1

原创 汉诺(Hanoi)塔问题

这个过程可以看作是一个递归过程,每次都是将除最底下的盘子外的所有盘子从一个柱子移动到另一个柱子上。从左到右有A、B、C三根柱子,其中A柱子上面有从小叠到大的n个圆盘,现要求将A柱子上的圆盘移到C柱子上去,期间只有一个原则:一次只能移到一个盘子且大盘子不能在小盘子上面,求移动的步骤和移动的次数。第1次 1号盘 A—>C 1 次。第3次 1号盘 B—>C 3 次。第7次 1号盘 A—>C 7 次。第1次 1号盘 A—>B。第1次 1号盘 A—>C。

2023-10-07 19:59:21 262

原创 Perm全排列函数

返回到第二层,swap(a,1,1),让a[1]与a[1]交换,数组为123,i++,i=2,swap(a,1,2),让a[1]与a[2]交换,数组为132,perm(a,2,2);返回到第一层:swap(a,0,0),i++,i=1,swap(a,0,1),让a[0]与a[1]交换,数组为213,perm(a,1,2);返回到第二层:swap(a,1,1),i++,i=2,swap(a,1,2),让a[1]与a[2]交换,数组为231,perm(a,2,2);第三层:继续判定,k=m,执行if语句,

2023-10-07 19:58:59 421

空空如也

空空如也

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

TA关注的人

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