数据结构与算法
文章平均质量分 82
数据结构学习心得、笔记持续分享中~
Dream小白
编程、成长ing……
展开
-
算法的时间复杂度和空间复杂度(一)
时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知。在实际中一般情况关注的是算法的最坏运行情况,所以数组中搜索数据时间复杂度为O(N)即:找到某条基本语句与问题规模N之间的数学表达式,就是算出了该算法的时间复杂度。此实例基本操作执行了M+N次,有两个未知数M和N,因此时间复杂度为 O(N+M)原创 2024-01-18 22:56:07 · 404 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度(二)
注意:函数运行时所需要的栈空间(存储参数、局部变量、一些寄存器信息等)在编译期间已经确定好了,分析:递归调用了N次,开辟了N个栈帧,每个栈帧使用了常数个空间。空间复杂度为O(N)分析:该例子使用了常数个额外空间,根据大O渐进表示法,所以空间复杂度为 O(1)。空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以。因此空间复杂度主要通过函数在运行时候显式申请的额外空间来确定。分析:动态开辟了N个空间,空间复杂度为 O(N)空间复杂度计算规则基本跟实践复杂度类似,原创 2024-01-19 21:58:00 · 377 阅读 · 1 评论 -
顺序表和链表从零详细梳理(单链表篇)
可链表就不同了,它是多次malloc出来的空间(同样要贷款10w,链表贷款多次,每次还对应次数的就行了,不违反规则)。b.空间满了只能扩容,而扩容存在浪费,且扩的越多,浪费得越多(比如有一个100的空间满了,扩到200,但只需要插入120的数据,那就造成80空间的浪费);原创 2024-01-28 23:06:03 · 881 阅读 · 0 评论 -
顺序表和链表从零详细梳理(顺序表篇)
线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。下面借助图形直观感受一下顺序表和链表的结构:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表有静态和动态两种。1.静态顺序表:使用定原创 2024-01-22 22:10:02 · 1032 阅读 · 0 评论