自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【数据结构】计数排序

综上,各步骤的时间复杂度相加为:O(N)+O(N)+O(range)+O(N)=O(3N+range)=O(N+range)遍历待排数组a,统计每个元素出现的次数,将对应计数数组tmp位置的值+1该步骤需要遍历n个元素,所以时间复杂度为O(N)将计数数组tmp对应位置的数据进行--操作,将tmp元素放入原数组a,所以时间复杂度为O(N)但是,数据只会映射100~108这个范围的空间,前面的空间没有用到,也就浪费了。计数排序算法的时间复杂度严格来说为O(N+range),也可取两个中较大的一个。

2025-03-04 17:52:36 646

原创 【数据结构】空间复杂度

这就像程序运行时,会在系统中展开庞大的运行架构,占用大量的内存、CPU 等资源,其运行时占据的 “空间” 和要比程序本身所占用的大得多,也有可能会随着业务的发展和数据量的增加不断扩展。此外,程序运行时所占用的内存还受到很多与算法本身无关的因素影响,不同的计算机硬件环境(如内存架构、字长等)和软件环境(如操作系统的内存管理机制、编译器的优化程度等)会导致同一算法在不同环境下的实际内存占用有所不同。n个int型变量的数组,占用的空间大小是4nbit,4n的大小是属于线性阶的,那么它的空间复杂度为O(N)

2025-01-26 22:33:48 1755 3

原创 【数据结构】快排之三路划分

在之前快排是排完序把key放在中间,左边比key值小,右边比key大,跟key相等的值在哪里并没有规定,跟key相等的值可以在左边,也可以在右边。因为假如cur没有遇见比key大的值,right没有--,那么cur与right在相同位置时,并不能确定right所指向的值是否小于key。但是,有些场景下hoae和lomuto(前后指针法)还是适应的不是很好,就是当数组中有大量重复数据时,该场景下性能是有些退化的。cur指向的值与left位置的值进行交换,然后left++,cur++核心思想是把数组中的数据。

2024-11-13 17:54:23 514

原创 【数据结构】快速排序(三种实现方式)

三种实现快排的方式

2024-10-23 19:58:54 3135 2

原创 【2022统考真题】计算时间复杂度

对求时间复杂度进行了详细分析

2024-10-14 19:50:14 797 2

原创 【数据结构】希尔排序(缩小增量排序)

引入希尔排序的原因 思路分析 gap分组问题 代码实现 易错提醒 排序小tips

2024-09-08 13:19:08 864 7

原创 【数据结构】直接插入排序

基本思想,思路分析,代码实现,易错提醒,时间复杂度分析

2024-09-06 20:00:24 546 2

原创 【数据结构】栈的定义与实现(附完整运行代码)

栈的定义,顺序栈链栈的比较,栈的实现

2024-06-25 18:00:45 2267 6

原创 【数据结构】比较顺序表和链表的区别(优缺点),细讲CPU高速缓存命中率

顺序表链表的比较 ,主存和本地二级存储,寄存器和三级缓存,顺序表缓存命中率,链表缓存命中率

2024-06-24 17:49:50 1618 7

原创 【数据结构】时间复杂度

时间复杂度的概念,大O渐进表示法,计算时间复杂度步骤,常见时间复杂度举例,最好,最坏和平均情况的时间复杂度,时间复杂度优劣对比

2024-06-20 16:12:10 3700 6

原创 【C语言】联合(共用体)

联合体的声明,变量的创建,特点,联合体的大小计算,判断大小端,联合体的优缺点

2024-06-12 19:01:40 1820 9

原创 【C语言】位段(结构体实现位段)

位段的定义,声明,内存分配,在内存中的存储方式,位段的优点,位段的跨平台问题,位段的应用,位段使用的注意事项

2024-06-03 20:32:21 1717 14

原创 【C语言】结构体

结构体的声明,结构体变量的创建和初始化,结构的特殊声明,结构体的自引用,结构体成员的访问,结构体传参

2024-05-30 16:58:14 922 8

原创 【C语言】指针(三)

介绍了字符指针,数组指针,二维数组和数组名的理解,二维数组传参,函数指针及其使用,函数指针数组,转移表的实现

2024-05-21 19:38:35 1355 26

原创 【C语言】指针(二)

传值调用和传址调用,数组名的理解,通过指针访问数组,一维数组传参的本质,指针数组,指针数组模拟实现二维数组

2024-05-15 23:30:35 1029 22

原创 【C语言】指针(一)

内存,指针变量,指针类型的意义,野指针,指针运算,二级指针

2024-05-13 14:41:03 945 22

原创 【C语言】static关键字用法

代码2:运行结果可知,被static修饰过后的i,它的值是有累加效果的,在头一次进入test函数后,创建了i后,出函数是不会被销毁的。如果一个函数被static修饰,外部链接属性就变成了内部链接属性,其它源文件(.c)就不能再使用该函数,只能在自己所在的源文件内部使用。使用建议:如果一个全局变量,只想在所在的源文件内部使用,不想被其他文件发现,就可以使用static修饰。使用建议:一个函数只想在所在的源文件内部使用,不想被其他源文件使用,就可以使用static来修饰。外部链接属性就变成了内部链接属性,

2024-05-07 18:23:18 982 30

原创 【C语言】函数

本来可以不用函数的声明,函数的定义利用函数的外部链接属性也可以实现,但分开写可以把函数的实现这个模块变成静态库,静态库是二进制的,是看不懂的。我们可以把函数想象成小型的一个加工厂,工厂得输入原材料,经过工厂加工才能生产出产品,函数也是一样的,函数一般会输入一些值(可以是0个,也可以是多个),经过函数内的计算,得出结果。因为C语言编译器对源代码进行编译的时候,是从第一行往下扫描的,当遇见Add函数调用的时候,并没有发现前面有Add的定义,就会报出上述的警告。同时库函数的质量和执行效率上都更有保证。

2024-05-06 22:34:58 1497 7

原创 【C语言】字符串函数

只不过程序启动的时候errno是0,表示没有错误,当我们在使用标准库中的函数的时候发生了某种错误,就会让对应的错误码,存放在errno中。打印的时候,先打印传给perror的字符串,然后打印一个冒号,紧接着打印一个空格,最后打印错误码对应的错误信息。如果source指向的字符串的长度小于num的时候,只会将字符串中到\0的内容追加到destination指向的字符串末尾。因为\0是字符串结束的标志,此处追加5个字符,world在56789的位置,如果追加上一个\0,那么[10]的位置就是\0。

2024-04-29 14:10:22 2219 21

原创 【C语言】进制转换

2进制和10进制是类似的,只不过2进制的每一位的权重,从右向左分别是:2^0,2^1,2^2 .......如:2进制的01101011,换成16进制为:0x6b (十六进制位的数字,以0x开头)如:二进制的01101011,换成8进制为:0153。我们知道,数值是由不同的进制表示的,可以用二进制、八进制、十进制、十六进制表示。可以先将10进制转换为2进制,2进制再转换为16进制。先将该进制转换为2进制,再转换为我们想要的进制。分别是:10^0,10^1,10^2。2进制的数字每⼀位都是由0~1组成。

2024-04-26 15:28:45 446 9

原创 【C语言】动态内存管理

原因:free的意思是把空间的使用权限还给了操作系统,但是p还记得malloc时候的地址,还指向那块不属于自己的空间,所以一旦free完之后,p就是野指针了,所以把p置空,p=NULL,避免出现问题。当我们申请的内存空间空间过大或者过小的时候,为了合理使用内存,我们可以使用realloc函数,用来对动态开辟的内存的大小做出灵活的调整。calloc函数开辟空间的时候,它开辟好空间之后会把内容初始化为0,然后再把这块空间的。当是情况2的时候,在堆空间上找一块新的连续可用的空间,旧的空间释放掉,

2024-04-25 15:43:39 953 12

原创 【C语言】数组(一维数组和二维数组)

变长数组的意思是数组大小是可以使用变量来指定,在程序运行的时候,根据变量的大小来指定数组的元素个数,而不是数组的大小是可变的。当使用数组的类型的时候,数组的类型是必须加上元素个数的,它的元素个数也是类型的一部分,如果不加元素个数,就会报错。例如:int arr[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};指定的是数组中存放数据的类型,可以是:char,short,int,float等,也可以是自定义类型。arr[0][4]和[1][0](即两个5)地址一样。

2024-04-24 00:00:18 1106 7

原创 【C语言】分支语句和循环语句

只有在 switch 语句中使用break ,才能在跳出 switch 语句,如果某一个 case 语句的后边没有 break 语句,代码就会继续往下执行,有可能执行其他 case语句中的代码,直到遇到 break 语句或者 switch 语句结束。控制语句用于控制程序的执行流程,以实现程序的各种结构方式,(c语言支持3种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,c语言有九种控制语句。例如多分支语句那里,只能执行其中的一条(即只能执行语句1,或者语句2,或者语句3)。

2024-04-20 12:42:17 890 10

原创 2023年11月19日

多数人的成功,在于持之以恒。坚持两字,说容易,写容易,坚持下来不容易!苟有恒,何必三更起五更眠;最无益,莫过一日曝十日寒。

2023-11-19 12:06:36 132 4

空空如也

空空如也

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

TA关注的人

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