数据结构
9677
这个作者很懒,什么都没留下…
展开
-
海贼OJ235. 递归实现指数型枚举
题目描述题目描述从 1到n 这 n 个整数中随机选取任意多个,每种方案里的数从小到大排列,按字典序输出所有可能的选择方案。输入输入一个整数 n。(1≤n≤10)输出每行一组方案,每组方案中两个数之间用空格分隔。注意每行最后一个数后没有空格。i用来表示当前位置,j用来表示当前最小的数,肯定大于前面位置的数,n为整数的总个数。f(i,j,n)边界条件j>n 则返回#include<iostream>using namespace std;/*#235. 递归实现指数型原创 2024-02-13 10:20:01 · 383 阅读 · 0 评论 -
数据结构------算法时间复杂度
通常我们接触的都是以2为底的,但是为什么书上通常都没有底数呢,因为底数的不同对这个速度的影响不大。以二为底和以四为底都差不多。O(m+n) 两个并列的for循环,不是根据那个时间复杂度的规模取大头吗?主要是看这个速发的时间性能,从这个算法规模入手,具体的看一下这个算法的所需时间与这个算法规模的关系。O(mn)两个for循环(嵌套)且其中一个的循环次数为m。O(1) 常数次 1次 2次。O(n^2)两个for循环(嵌套)通俗的理解一下算法的时间复杂度。O(n)一个for循环。还有这个O(logN)原创 2024-02-02 15:33:21 · 356 阅读 · 0 评论 -
散列函数,哈希表hash table
散列表(hash table/哈希表),是根据关键码值(key value)而直接访问的数据结构。也就是说,它通过把关键码值映射到表中的一个位置来访问记录,以加快查找速度。这个映射函数叫做散列函数,存放记录的数组教叫做散列表。当然冲突是不可避免的,也可以用再散列,或者拉链法,来解决这个冲突,但是冲突一旦发生,肯定速度就是慢了。手机联系人,一般能够输入这个手机号咱们就能够很快的找到这个值。为了减少这个哈希表的冲突,就得注意这个填装因子。具体问题具体分析啊,别只相信D。附上英语啊,提高B格。原创 2024-01-14 12:49:00 · 520 阅读 · 0 评论 -
对快速排序思想的进一步理解,分而治之,欧几里得算法(常用求最大公约数的方法)
快排的思想,每次给这个序列的一个元素找到其正确的位置,且这个元素的左右两边的元素区间内有序,即这个元素的左边的所有元素都小于等于这个元素,右边的所有元素都大于等于这个元素。其实得根据算法每次选的枢轴,如果是随机选,就可以避免第一种有序时的最坏情况,如果不是随机选,而是每次都选每个分区的第一个元素,就会。假设有一块地,现在用这个同样大小的正方形来铺满,求所可用的最大的正方形地砖的面积。如图,给这个第一个元素进行排列,第一趟,就给第一个元素找到了其正确的位置,快速排序的性能高度依赖所选的基准值。原创 2024-01-13 20:49:59 · 456 阅读 · 0 评论 -
对比递归和循环来实现n的阶乘来更深入了解递归海贼OJ184路飞吃桃
为了方便看,我们先都求5的阶乘。原创 2024-01-13 17:20:09 · 438 阅读 · 0 评论 -
选择排序算法以及其不稳定性具体指的是
【代码】选择排序算法以及其不稳定性具体指的是。原创 2024-01-01 23:24:12 · 348 阅读 · 0 评论 -
数据结构小学期第二部分渡船管理模拟
渡船管理模拟渡口的每条渡轮一次能装载6 辆汽车过江,车辆分为客车、鲜货车和普通货车3类,渡船管理规定;①同类汽车先到的先上船;②上船的优先级为:客车优先于鲜货车、鲜货车优先于普通货车;③每上3 辆客车才允许上2 辆鲜货车,然后再允许上1 辆货车。若等待的客车不足3 辆时,用鲜货车填补,当等待的鲜货车不足2 辆时,按用普通货车填补;当没有普通货车等待时,按客车优先于鲜货车的原则填补;④当装满6 辆后则自动开船;⑤1 个小时为1 个周期,若周期结束仍不满载则应人为控制开船。设计要求:b(1) 模拟各类车原创 2020-09-20 15:58:23 · 1955 阅读 · 0 评论 -
自测-1 打印沙漏 中国大学MOOC-陈越、何钦铭-数据结构-起步能力自测题
中国大学MOOC-陈越、何钦铭-数据结构-起步能力自测题自测-1 打印沙漏 (20分)本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。输出原创 2020-08-18 21:33:33 · 711 阅读 · 0 评论 -
数据结构 线性表的链式表示和实现 增删找查
1.单链表的定义和表示:任意一组存储单元存储线性表的数据元素(这组存储单元可连续也可不连续)结点包含两个域:数据域(存储元素信息)和指针域(存储直接后继位置(指针或链))。n个结点连结成一个连结成一个链表即为线性表特点:不要求逻辑上相邻的两个元素物理上也相邻通过“链”建立起数据元素之间的逻辑关系插入、删除不需要移动数据元素,只需要改链但对于访问序号为i的元素和求线性表的长度为多少就比顺序表复杂线性表的链式存储实现typedef struct LNode*List;struct LNode原创 2020-08-18 15:16:41 · 2632 阅读 · 1 评论 -
数据结构,单链表后插法 C++
#include<iostream>using namespace std;#include<stdlib.h>#define ok 1 #define error 0typedef int ElemType;typedef int status;//单链表的存储结构typedef struct LNode{ ElemType data;//结点的数据域 struct LNode *next; //结点的指针域 }LNode,*LinkList; //定义结原创 2020-08-18 15:11:36 · 1133 阅读 · 1 评论 -
数据结构:单链表前插法(头插法)C++
#include<iostream>using namespace std;#include<stdlib.h>#define ok 1 #define error 0typedef int ElemType;typedef int status;//单链表的存储结构typedef struct LNode{ ElemType data;//结点的数据域 struct LNode *next; //结点的指针域 }LNode,*LinkList; //定义结原创 2020-08-18 14:44:44 · 4348 阅读 · 1 评论 -
数据结构 线性表及其顺序存储
什么是线性表:由n个数据特性相同的元素构成的有限有序序列称为线性表表中元素的个数成为线性表的长度,n=0时为空表表起始位置:表头表结束位置:表尾除第一个之外,结构中每个数据元素只有一个前驱除最后一个之外,结构中每个数据元素均只有一个后继线性表的抽象数据类型描述:类型名称:线性表(List)...原创 2020-08-18 06:10:44 · 906 阅读 · 0 评论 -
数据结构 线性表 多项式表示方法
多项式关键数据:多项式项数n多项式系数ai,及指数i方法一:顺序存储结构直接表示数组各分量对应多项式各项:两个多项式相加:两个数组对应分量相加如果某一项指数过大,会造成数组空间的极大浪费方法二:顺序存储结构表示非零项按照指数大小有序存储相加过程:从头开始比较两个多项式当前对应项的指数从大到小比较,先拿一个数组比较方法三:链表结构存储非零项链表中每个结点存储多项式中的一个非零项,包括系数和指数两个数据域以及一个指针域...原创 2020-08-15 15:38:01 · 1429 阅读 · 0 评论 -
算法 给定N个整数序列{A1,A2,....,An}求所有子序列之和的最大值
最简单的算法:int Max1(int A[],int N){int sum1,maxsum=0,i,j,k;for(i=0;i<N;i++){for(j=i;j<N;j++){sum1=0;for(k=i;k<=j;k++){sum1+=A[k];if(sum1>maxsum){maxsum=sum1;}}}}return maxsum;}这个算法的时间复杂度太高,肯定得优化。对于相同的i,不同的j我们只需要加上下一项,求和就可以了,这样可以.原创 2020-08-15 15:19:38 · 4496 阅读 · 0 评论 -
数据结构 抽象数据类型 算法的定义
什么是数据结构数据对象在计算机中的组织方式数据对象必定与一系列加在其上的操作相关联完成这些操作所用的方法就是算法数据类型数据对象集数据集合相关联的操作及抽象:描述数据类型的方法不依赖于具体实现与存放数据的机器无关与数据存储的物理结构无关与实现操作的算法和编程语言均无关只描述数据对象及和相关操作集“是什么”,并不涉及“如何做到”的问题ElementType 通用类型函数只管功能,不管什么语言,方法实现的算法一个有限长的操作序列算法的特性:有穷性确定性可行性输入输出原创 2020-08-15 15:02:04 · 748 阅读 · 0 评论 -
数据结构 复杂度分析
一般找到最耗费时间的一项,然后其余消耗时间小的可以忽略不计原创 2020-08-15 08:06:57 · 87 阅读 · 0 评论 -
如何用命令行运行可执行程序.exe
也有可以在命令行编译运行程序的,得找到自己的编译器位置然后配置,如果想弄的可以百度这里主要是介绍如何运行可执行程序在windows 系统中,开始菜单右键,点击运行,输入cmd(请务必采用这种方式打开命令行)出现这种界面,>是命令提示符,将命令以及所要执行的命令的程序的位置写好,回车。好处:如果你需要看程序运行时间,可是手动输入的时间也会记录在内,因此,让windows自动输入更准确下面是代码示例和运行结果#include<iostream>#include<time.原创 2020-08-15 06:46:46 · 8662 阅读 · 0 评论 -
数据结构 绪论C++ 关于数据组织,空间使用,算法效率
数据结构所需要考虑的问题数据组织:举例子,例如图书馆查找书籍涉及如何摆放书籍的问题按字母摆放书,按分类摆放书,要考虑不同摆放所需要的时间,操作的步骤是否太多,查找,插入时所需要的时间和步骤,是不是简单。考虑所分配的空间是否合理空间使用:同样是输出1到1000的数用for循环和递归,for循环能够正常输出而递归则很慢还可能出错计算机实际上不喜欢使用递归,因为递归所占的空间特别大。算法效率:写程序计算给定多项式直接表示:利用秦九韶算法区别在于时间的快慢:可以引入头文件原创 2020-08-15 06:33:47 · 95 阅读 · 0 评论 -
求程序运行时间的函数clock()以及 CLOCKS_PER_SEC与CLK_TCK的区别,用法
最近学习算法和数据结构涉及到一个时间问题要看程序运行所需的时间。所以要用clock()函数time.h的头文件但是这个函数,单位不是s,咱的时间是s所以要除以个CLOCKS_PER_SEC这个表示一秒钟内CPU运行的时钟周期数(时钟计时单元)百度百科是这么说的这两个有什么区别最新VS2019的说法我们用的时候只需要,会用就行下面是是例子:#include<iostream>#include<time.h> using namespace std;原创 2020-08-14 17:02:12 · 5550 阅读 · 0 评论