
数据结构
文章平均质量分 91
The August
这个作者很懒,什么都没留下…
展开
-
数据结构—排序
排序方法平均情况最好情况最坏情况辅助空间稳定性冒泡排序O(N2N^2N2O(N)O(N2N^2N2O(1)稳定简单选择排序O(N2N^2N2O(N2N^2N2O(N2N^2N2O(1)不稳定直接插入排序O(N2N^2N2O(N)O(N2N^2N2O(1)稳定希尔排序O(NlogNlogNlogN∽\backsim∽O(N2N^2N2O(N1.3N^{1.3}N1.3O(N2N^2N2O(1)原创 2023-09-10 09:22:21 · 2030 阅读 · 6 评论 -
数据结构—循环队列(环形队列)
循环队列选择用数组实现,循环队列需要用一个指针来指向存储队列数据的空间,用两个变量来记录队列中存储数据的起始(对头)和末尾(队尾)的数组位置,最后用一个变量记录队列的存储数据的最大容量。原创 2023-08-26 19:13:23 · 4870 阅读 · 12 评论 -
数据结构—队列
但是注意如果这个接口函数偶尔调用可以用这样的方式实现,如果经常调用这个函数就需要在队列结构体中在添加一个成员size(用来记录数据个数,入队列和出队列的函数都得对size进行操作),这样效率更高。出队列操作首先保存头节点的下一个节点,然后删除头节点,最后将头指针指向头节点的下一个节点即可。否则将新节点直接入队列,更新队列中的尾指针即可。队列也可以数组和链表的结构实现,使用链表(单链表)的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。队列的销毁需要将队列中的所有数据都删除。原创 2023-08-21 15:36:00 · 578 阅读 · 4 评论 -
数据结构—栈
需要用结构体创建一个栈,这个结构体需要包括栈的基本内容(栈,栈顶,栈的容量)。原创 2023-08-02 10:33:04 · 550 阅读 · 12 评论 -
数据结构—链表
中间/头部的插入删除,时间复杂度为O(N),效率比较低(因为需要挪动数据)增容(需要开辟新空间释放旧空间)需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。其中链表就可以很好的解决上面的问题。原创 2023-07-29 16:46:37 · 1269 阅读 · 12 评论 -
数据结构—顺序表
如果顺序表的空间足够可以直接将要插入的数据放到数组下标为size的位置上去,同时size++,capacity不需要修改这样就完成尾插了。顺序表的头插数据时需要从后往前挪动数据(如果是从前往后挪动数据会导致所有的数据都会改成第一个元素的值),再将要插入的数据放到数组中的第一个位置上去并将size++。插入数据的过程是将pos位置上的数据到最后的数据依次从后往前挪动,最后再将要插入的数据放到pos位置上,size++即可。注:顺序表要求是一段连续的物理空间(其实是数组),但要求存储的数据是依次连续存储的。原创 2023-06-28 10:23:01 · 840 阅读 · 18 评论 -
数据结构和算法
时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。注意:函数运行时所需要的栈空间(存储参数、局部变量、一些寄存器信息等)在编译期间已经确定好了,因此空间复杂度主要通过函数在运行时候显式申请的额外空间来确定。注:数据结构和算法是不分家的,数据结构中包含一些算法一些,而算法的解决又离不开数据结构。注:时间复杂度O(M+N) 或者O(max(M,N))原创 2023-06-23 12:31:04 · 1495 阅读 · 19 评论 -
数据结构—二叉树
树及二叉树树概念及结构树的概念树的相关概念树的表示树在实际中的运用二叉树概念及结构概念现实中的二叉树及结构特殊的二叉树二叉树的性质树概念及结构树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。注意:树形结构中,子树之间不能有交集,否则就不是树形结构树的相关概念节点的度:一个节点含有的子树(子节点)的个数称为该节点的度; 如上图:A的为6叶节点或终端节点:度为0的节点称原创 2021-08-13 13:13:37 · 1071 阅读 · 5 评论 -
数据结构(链表——双向链表的实现)
链表——双向链表的实现链表的概念及结构链表的分类带头双向循环链表的介绍(重点)双向链表的实现模型思路(独一份)双链表的各种方法实现创建结构体并创建结构体指针变量实现双向表初始化实现双向链表销毁实现双向链表打印实现双向链表在任意位置的前面进行插入实现双向链表的头插和尾插实现双向链表在任意位置进行删除实现双向链表的头删和尾删实现双向链表查找链表的概念及结构概念: 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。结构:链表的分类实际中链表的原创 2021-08-05 11:03:56 · 1414 阅读 · 6 评论