数据结构
明翥
这个作者很懒,什么都没留下…
展开
-
蓝桥杯刷题总结---第一周
一.题目 1110: 2^k进制数设r是个2^k 进制数,并满足以下条件:(1)r至少是个2位的2^k 进制数。(2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位。(3)将r转换为2进制数q后,则q的总位数不超过w。在这里,正整数k(1≤k≤9)和w(k〈w≤30000)是事先给定的。问:满足上述条件的不同的r共有多少个?我们再从另一角度作些解释:设S是长度为w 的01字符串(即字符串S由w个“0”或“1”组成),S对应于上述条件(3)中的q。将S从右起划分为若干个长度为k 的原创 2022-02-01 22:42:11 · 817 阅读 · 0 评论 -
最小生成树
1)包含任务或问题描述和分析最小生成树其实是最小权重生成树的简称。我们称求取该生成树的问题成为最小生成树问题。一个连通图可能有多个生成树。当图中的边具有权值时,总会有一个生成树的边的权值之和小于或者等于其它生成树的边的权值之和。2)设计与实现利用prim算法实现最小生成树,该算法思路与Dijsktra算法大致相同,不过Prim算法的最短是相较于整体而言的,所以我将Dijsktra算法稍作改进得到Prim算法3)测试例子与结果分析测试例子:(图片从网上找的,当做例子,非常直观)测.原创 2022-01-11 16:13:37 · 278 阅读 · 0 评论 -
C语言快速排序
1)包含任务或问题描述和分析快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。2)设计与实现1. 在数组中选一个基准数(通常为数组第一个);2. 将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边;3. 对于基准数左、右两边的数组,不断重复以上两个过程,直到每个子集只有一个元素,即为全部有序。3)测试例子与结果分析4)带注释的源代码#includ.原创 2022-01-11 16:10:49 · 248 阅读 · 0 评论 -
有向图最短路径的Dijsktra算法
1)包含任务或问题描述和分析如果存在一条从i到j的最短路径(Vi.....Vk,Vj),Vk是Vj前面的一顶点。那么(Vi...Vk)也必定是从i到k的最短路径。为了求出最短路径,Dijkstra就提出了以最短路径长度递增,逐次生成最短路径的算法。譬如对于源顶点V0,首先选择其直接相邻的顶点中长度最短的顶点Vi,那么当前已知可得从V0到达Vj顶点的最短距离dist[j]=min{dist[j],dist[i]+matrix[i][j]}。根据这种思路,假设存在G=<V,E>,源顶点为V0原创 2022-01-11 16:08:52 · 952 阅读 · 0 评论 -
霍夫曼编码
1)包含任务或问题描述和分析霍夫曼编码(Huffman Coding)是一种编码方法,霍夫曼编码是可变字长编码(VLC)的一种。霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。2)设计与实现设计一个带父指针的二叉树,将节点排序后放入一个堆中保存,循环构造二叉树,最后遍历二叉树,再用原创 2022-01-11 16:05:21 · 3885 阅读 · 0 评论 -
最小编辑距离
1)包含任务或问题描述和分析UNIX系统下有一个行编辑器ed,它每次只对一行文本做删除一个字符、插入一个字符或替换一个字符三种操作。现在给你两个任意字符串(不包含空格),请帮忙计算它们的最短编辑距离。2)设计与实现利用动态规划先比较最后一位字母,若一样则最小编辑距离为前几个字母的最小编辑距离,若不一样则分三种情况,最终最小编辑距离为这三种最小单位距离加一3)测试例子与结果分析测试例子:结果:4)带注释的源代码#include<stdio.h>#inc.原创 2022-01-11 16:03:16 · 96 阅读 · 0 评论 -
图的拓扑排序
1)包含任务或问题描述和分析设计一个排序算法来求有向图是否存在环路2)设计与实现输入一个有向图的邻接矩阵,按列遍历,找出入度为0的结点,并对其标记和删除以该节点为尾的边,循环直到找不出没有被标记的入度为0的点,比较标记点的个数判断是否出现环路3)测试例子与结果分析测试用例:结果:4)带注释的源代码#include<stdio.h>#include<stdlib.h>#define MAX_SIZE 4#define MAXROAD 9.原创 2022-01-11 16:00:55 · 102 阅读 · 0 评论 -
AVL 树的插入
1)问题描述和分析设计一个二叉排序树,使其每个节点的左右子树的高度差小于2,使其平均查找长度最小2)设计与实现为二叉排序树增加左单旋转,右单旋转,左右双旋转,右左双旋转等功能,来实现平衡二叉树功能3)测试例子与结果分析测试用例;0 1 2 3 4 5结果:3 1 0 2 4 54)源代码#include<stdio.h>#include<stdlib.h>#define MAX(a,b) a>b?a:btypedef struct {原创 2022-01-11 15:58:12 · 166 阅读 · 0 评论 -
基于磁盘的带替换选择的合并排序
1)问题描述和分析我们计算机的内存是有限的,当我们需要处理的数据超出我们的内存的时候就需要我们借助磁盘来进行排序,这种排序被称为外部排序,外部排序通常由归并排序实现.2)设计与实现我们将所需要处理的数据放入存入txt文件,假设要处理50000个数据,将这些数据分为100个文件,每个文件500个数据,利用内部排序使这些文件中的数据有序,之后利用队列对这些数据进行归并排序.3)测试例子与结果分析排序前的部分数据为:利用随机数生成50000个数据排序后的部分数据为:4)源.原创 2022-01-11 15:54:37 · 184 阅读 · 0 评论