自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (1)
  • 收藏
  • 关注

原创 时间复杂度和空间复杂度的优化

可以看到随着n的数值增加,fib函数被调用的次数指数级增加,他的时间复杂度是2^n。同时他的空间复杂度是n。这个函数的空间复杂度很高,我们想降低他的时间复杂度,最直接的方法就是空间换时间。此方法下,开辟了一个空间,减少了时间上的损耗,那么有没有同时减少空间消耗的办法。用三个变量存储数据,有效减少空间损耗。将其改写为递归函数。

2023-02-15 18:53:55 420

原创 练习 算法分析 二分查找的时间复杂度

栈的大小是有限的,这个函数的时间复杂度是O(n)二分查找的时间复杂度。

2023-02-13 11:15:53 91

原创 时间复杂度与空间复杂度

算法执行时间需要通过依据该算法编制的程序在计算机上运行所消耗的时间来度量,而度量一个程序的执行时间通常有两种方法。算法中基本执行操作的次数和问题的规模n之间的函数关系。(1)找出算法中的基本语句,执行次数最多的就是基本语句。对比不同算法之间的优劣,主要是从算法所占用的时间和空间两个维度去考量。空间维度:执行当前算法需要占用多少内存空间,用空间复杂度来描述。时间维度:执行算法所需要的时间,用时间复杂度来描述。时间复杂度已经一目了然了,查表法的时间复杂度最低。(2)计算基本语句执行次数的数量级。

2023-02-07 21:46:43 90

原创 算法和算法分析

正确性:大概可分为四个层次,a,不含语法错误吧 b,程序对几组数据都能得到满足要求的结果,c,对于精心选择的典型例子能产生满足要求的结果。确定性,算法中每一条指令必须有确切的含义,读者理解时不会产生二义性,而且,在任何条件下,算法只有唯一一条执行路径,对于相同输入只能得到相同输出。1.算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中一条指令表示一个或多个操作,此外一个算法有以下重要特征。可行性,一个算法是能行的,即算法中描述的操作大都是可以通过已经实现的基本运算执行有限次来实现的。

2023-02-03 13:27:23 179

原创 练习 数据结构 数组中的重复数字

在数组中查找重复数字,给定一个数组nums,数组大小为n+1,数组中的数字都在n到1之间,已知存在至少一个重复的整数,找到这个数。查表方式寻找重复数字,开辟一个和原数组一样大的空间,然后用原数组的数字和新数组的下标一一对比。双指针,快指针和慢指针,慢指针走一步,快指针走两步。使用穷举法,依次拿数组中的每一个数与其他数比较。

2023-01-31 22:39:08 55

原创 练习 数据结构 判断一个数列是否为单调数列

2.在数组中查找重复数字,给定一个数组nums,数组大小为n+1,数组中的数字都在n到1之间,已知存在一个重复的整数,找到这个数。分别编写两个函数,一个判断是否单调递增,一个判断是否单调递减。1.判断一个数列是否是单调的。

2023-01-19 10:44:16 203

原创 练习 数据结构 合并两个集合

用两个线性表了LA和LB分别表示两个集合A和B,现在要一个新的集合A=A U B,这就要求扩大线性表LA,然后把只存在于LB中的数据传递到LA中。

2022-11-23 23:25:48 290

原创 练习 数据结构 旋转数组

方法3(三次逆置,第一次逆置数组,如1234567->7654321,第二次逆置前n个数,n是要移动的距离,比如n=3,得到5674321,最后一次逆置剩下的数据)方法2(以空间换时间,创建一个新的空间,数组分为两部分,得到要移动的距离后,先把数组左边的部分移到新空间中,再移动右边的部分)void Rotate(int* nums, int n, int k)//k是右移的距离。给定一个数组,将数组中的元素向右移动k个位置,k是非负数。方法1(数组内移动,不额外开辟空间)

2022-11-10 18:06:00 144

原创 练习 数据结构 合并两个有序数组

给出两个按非递减顺序排列的整数数组,num1和num2,另有两个整数m和n,分别表示num1和num2的元素数目,合并num2到num1中,并按非递减顺序排列。开辟一块新的空间,把数据依次遍历比较之后放入新的空间,最后一次性把数据放回原数组中。逆插,k从数组最后往前走,依次从后往前遍历数组1和2,

2022-11-07 23:22:15 197

原创 练习 数据结构 删除所有重复的值

定义两个指针i和j,从头开始遍历,val为重复值,i遍历到的值等于val就继续走,直到不等于val,j再走,然后i位置的值赋给j。

2022-10-26 17:08:46 424

原创 笔记 顺序表(3)

分析 insertItem的返回值,两个false无法判断错误原因,所以修改,添加宏定义,增强可读性。#define NFEASIBLE -1//不能实行。#define OVERFLOW -2//内存溢出。顺序表删除数据(删除pos位置的值)删除顺序表最后一个值。

2022-10-25 21:08:54 55

原创 笔记 顺序表(2)

1.顺序表插入数据元素bool insertItem(seqlist* plist, int pos, elemtype val){ assert(plist != NULL); if (posplist->cursize)//先判断pos是否合法 { return false; } if (isfull(plist) && !Inc_capacity(plist))//先判断是否表满了,满了,然后增容,如果增容成功,返回真,

2022-10-23 21:01:27 46

原创 笔记 顺序表(1)

开辟的空间是一个定值,无法根据存放的数据变化。受到栈空间的限制,无法突破一定的大小。1.固定大小顺序表的缺陷。2.设计可变大小的顺序表。

2022-10-10 22:00:40 51

原创 笔记 线性表

3.除第一个之外,集合中的每个数据元素均只有一个前驱。4.除最后一个外,集合中的每个数据元素均只有一个后继。2.存在唯一的一个被称为“最后一个”的数据元素。1.存在唯一的一个被称为“第一个”的数据元素。

2022-09-22 17:02:19 42

原创 笔记 数据结构

结构中的关系描述的是数据元素之间的逻辑关系,因此又称为数据的逻辑结构。它包括数据元素的表示和关系的表示。数据的逻辑结构和物理结构是密切相关的两个方面,以后会看到,任何一个算法的设计取决于选定的数据,而算法的实现依赖于采用的储存结构(物理结构)。是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理,一个数据元素可又若干个数据项组成,数据项是数据元素不可分割的最小单位。数据元素之间的关系在计算机中有两种不同的表示方法:顺序映像和非顺序映像,并由此得到两种不同的储蓄结构,顺序储蓄结构和链式储蓄结构。

2022-09-07 15:36:05 105

原创 练习 杨辉三角

for (i = 2;s = 1, i++) // 行数 i 从 2 到层高。// 最后一个 1,换行。// 输出第一个 1。getchar();

2022-08-27 20:49:46 41

原创 练习 字符串的操作

【代码】练习 字符串的操作。

2022-08-27 14:26:44 87

原创 笔记 指针(3)

指针的类型决定了指针的解析能力,如char类型,解析1字节 int类型 解析4字节。基本数据类型可以相互赋值,指针变量的类型不同就不能相互赋值。指针只能进行加减运算,不能进行乘和取模。2.取值和取地址运算符的结合。1.类型和指针的关系。

2022-08-24 20:06:48 66

原创 笔记 指针(2)

那么类型对指针有什么作用呢,根据指针类型的不同,+1时也不同,类型占的字节数越多,地址增加的就越快。变量的生存期不受函数的影响就可以返回它的地址。无论什么类型,指针变量大小为四字节。double型 加了八字节。3.取值和自增运算符的结合。1.函数返回变量的地址。2.类型指针+1的限制。char型 加了一字节。int型 加了四字节。

2022-08-24 15:47:09 38

原创 笔记 指针(1)

计算机中所有的数据都必须存放在内存中,不同类型的数据占用的字节数不一样,为了正确地访问这些数据,必须为每个字节都编上号码,每个字节的编号是唯一的,根据编号可以准确地找到某个字节,我们将内存中字节的编号称为地址或者指针,地址从0开始依次增加,对于32位环境,能使用的内存位4gb。总结:不要返回一个局部变量的地址,当我们调动此函数,系统为它分配栈帧,当调用结束时,系统会收回栈帧,即使能拿到地址,这个地址也是一个失效指针,它已经还给系统了,不能对他赋值和取值。3.野指针和空指针,空悬指针,失能指针。

2022-08-23 16:02:34 51

原创 练习 定义大小为100的整形数组,使用随机函数给数组元素赋值,数值范围1--100,并且排序,不允许重复

定义大小为100的整形数组,使用随机函数给数组元素赋值,数值范围1--100,并且排序,不允许重复。

2022-08-21 21:43:44 495

原创 练习 定义大小为100的整形数组,使用随机函数给数组元素赋值。数值范围1--100,并且排序,使用冒泡排序实现

定义大小为100的整形数组,使用随机函数给数组元素赋值。数值范围1--100,并且排序,使用冒泡排序实现。

2022-08-20 12:41:23 218

原创 笔记 指针数组和数组指针 数组查表法

查表法:将一些事先计算好的结果,储存在数组中,用到是直接按下标取数据,以节省运行时的计算时间,以空间换时间。给出一个日期,计算它是这一年的第几天。

2022-08-20 10:38:38 194

原创 笔记 一维数组

数组是包含给定类型的一组数据,并将这些数据一次存储在连续的内存空间中。每个独立的数据被称为数组的元素,元素的类型可以是任意类型,数组本身也是一个结构,其类型由它的元素类型延伸而来。更具体的来说,数组的类型由元素的类型和数量所决定。如果一个数组的元素是T类型,那么该数组就称为“T数组”。数组在储存单元中是顺序连续存放的,任何一个元素都可以单独访问,其标识方式是用数组名和下标,//用双引号进行初始化,给出了大小,长度是确定的。数组的定义决定了数组名,元素类型以及元素个数。2.一维数组在内存中的储存。

2022-08-19 12:06:56 117

原创 练习 编写程序打印单月的日历,用户指定这个月的天数和该月起始日是星期几

编写程序打印单月的日历,用户指定这个月的天数和该月起始日是星期几。

2022-08-17 22:12:41 1607

原创 练习 如果一个数等于他的因子之和,则称该数为完数,例如6的因子为1,2,3而且6=1+2+3,因此6是完数,找出1000内的完数

2.随机生成1--100之间的数值请人猜,才对了结束游戏,猜错了则继续猜并提示所猜的数字是大于还是小于所制定的数,最终显示猜对所用的次数。3.编写程序,找出用户输入的一串数中的最大数,程序需提示用户一个一个的输入数字,当用户输入0或者负数时,程序要显示已输入的最大非负数。1.如果一个数等于他的因子之和,则称该数为完数,例如6的因子为1,2,3而且6=1+2+3,因此6是完数,找出1000内的完数。...

2022-08-17 20:51:51 647

原创 练习 输入一个值,打印1~n之间的偶数的平方

3.有一对兔子,从出生后第三个月开始每个月都生一对兔子,兔子张到第三个月后又生一对兔子,假如兔子不死,每个月兔子总数有多少。2.一个球从100米高度落地,每次落地反弹上次高度的一半,再落下,求他在第十次落地时,进过了多少米,第十次反弹多高。1.输入一个值,打印1~n之间的偶数的平方。......

2022-08-13 16:31:07 661

原创 笔记 跳转语句

goto语句和标号语句一起使用,所谓标号语句是用标识符标识的语句,它控制程序从goto语句所在的地方转移到标号语句处,goto语句会导致程序结构混乱,可读性降低,而且它所完成的功能完全可以用三种基本结构实现,因此一般不提倡使用goto语句,但在某些特定场合下,他可能会体现出价值,比如在多层循环嵌套中,要从最里面的循环地方跳出所有循环,如果使用break语句,不仅要使用多次,而且可读性较差这时goto语句可以发挥作用。中,用来跳出switch语句或者提前终止循环,转去执行Switch语句或循环后的语句。...

2022-08-11 23:25:13 57

原创 笔记 循环语句

对于变量自增和变量自减的循环来说,for语句通常是最好的选择。2.do while 语句。

2022-08-08 11:07:46 38

原创 练习 打印三个字符的最大值中间值和字符统计

3.统计字符串中的控制字符,数字字符,小写英文字符,大写英文字符,其他字符的个数,并打印输出。1.输入三个整型数据,打印最大值。2.输入三个整型数据,打印中间值。

2022-08-07 11:18:48 100

原创 笔记 if else分支语句 swich分支语句

default不是必须的,当没有default时,如果所有的case都匹配失败,那么switch中就什么都不执行,继续执行后续代码。case常量1(整型)break;//case标签必须是唯一常量值,不允许两个case具有相同常量值。switch(整型变量表达式//charshortint.....)//不为浮点数,字符串。switch是另外一种选择结构的语句,用来代替简单的拥有多个分支的ifelse语句。对于要先做判断再选择的问题就要使用分支结构。case常量2(整型)break;...

2022-07-29 23:42:12 45

原创 笔记 bool类型

在c文件中需要引入头文件#include;在cpp文件中可直接使用。赋值运算符(=)

2022-07-27 10:42:13 292

原创 笔记 C语言关键字(2)

局部变量当函数第一被调用,函数中的静态局部变量被初始化,再次调用这个函数,这个static变量也不会被再次初始化,仍保留前一次函数调用的结果。全局变量static说明的全局变量只可以在当前c程序文件中使用(作用与受到限制,生存期不变)函数static说明的函数只可以在当前c程序文件中使用(作用与受到限制,生存期不变)C语言中static关键字修饰变量和函数。1.static关键字。...

2022-07-25 23:53:55 141

原创 笔记 c语言关键字(1)

定义是指为这个变量分配一块内存并给他取一个名字,这个名字就是变量名,这个名字一旦与这块内存匹配起来,他们就不能在分离,并且这块内存的位置也不能改变,一个变量在一定的区域内只能定义一次,如果多次定义编译器会提示你重复定义一个变量或对象。typedef是在C语言中允许为一个数据类型起一个新的别名,它本身是一种储蓄类的关键字,不能与auto,extern,mutable,static,register共同出现在一个表达式中。缓冲区在程序执行时,所提供的的一块储蓄空间,可暂时用来存放准备执行的数据。...

2022-07-24 11:43:19 117

原创 笔记 结构体入门

结构体若想访问成员使用.来访问,指针则使用指向符(->)来访问。如sp->s_id和(*sp).s_id作用相同。程序开发人员使用结构体来封装一些属性,设计出新的类型,在c语言中被称为结构体类型。在C语言中,结构体是一种数据类型(由程序开发者自己设计的类型)如果在主函数中创建的结构体,其可见性仅在此函数中有效。因为.的优先级高于*所以在写指针变量访问时要加一个括号。...

2022-07-21 17:10:57 142

原创 笔记 指针入门

简单的指针,一个是本身的值,一个是存放的值如p存放a的地址,*p是a本身

2022-07-01 22:33:52 51

原创 笔记 函数入门

函数按其是否系统预定义分为两类,按系统预定义的称为库函数或标准函数,如一些常用的数学计算函数,字符串处理函数,图形处理函数,标准输入输出函数,这些库函数都按功能分类,集中说明在不同的头文件中,用户只需在自己的程序中包含某个头文件,就可以直接使用该头文件中的函数,另一类是用户自定义函数,用户可以根据需要将某个具有相对独立性功能的程序定义为函数。形参:只能等到函数被调用时接受传递过来的数据,称为形参,形参是指函数名后括号中定义的变量,形式参数只有在函数被调用的过程中给予赋值(分配储存空间)。...

2022-06-29 21:47:06 58

原创 笔记 顺序程序设计

1.常量 不能被改变的量数字常量 1,2…字符常量 ’0’,’0’,’A’,’a’字符串常量 “0”宏定义 宏定义就是字符替换。格式:#define 宏名值例如:#define PI 3.14const常量const int ca =10;ca=20;//error2.变量 能被修改的量以字母数字和下划线组成,只能以字母或下划线开头,...

2021-11-11 15:52:38 48

原创 笔记 运算符

运算符易错运算符++,–,注意区分前置和后置。inti=10; intj=++i;//i为11,j为11 i=10; intk=i++;//i为11,k为10

2021-10-13 19:00:48 190

原创 练习 swap交换函数

通过一个函数来修改实参的值,必须传指针和函数内部解引用。* 如果想通过函数修改指针的方向,必须传该指针的地址。* &变量:获取该变量的地址。

2021-09-22 16:49:22 113

软件项目管理课程报告《教师教学管理系统》

自己写的报告,可以给找期末大作业的提供一点帮助,一个积分买不了吃亏买不了上当,要是和你题目一样直接拿去用吧

2022-06-29

空空如也

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

TA关注的人

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