
数据结构
文章平均质量分 59
kkk_皮蛋
这个作者很懒,什么都没留下…
展开
-
八大排序之堆排序
时间复杂度:O(nlogn),系数大,空间复杂度O(1),不稳定。原创 2024-03-27 19:57:33 · 1125 阅读 · 0 评论 -
八大排序之冒泡排序
时间复杂度:O(n^2),空间复杂度O(1),稳定。原创 2024-03-24 07:30:00 · 188 阅读 · 0 评论 -
八大排序算法之希尔排序
而我们通过这样的间隔式分组,可以实现,尽量让大数据在后面,肖书记在前面,通过5 3 1的三次分组,(注:最后一次必须是1的分组,因为我们要让所有数据有序)实现比插入排序时间复杂度低的排序。我们正常分组时候是这样直接挨着分组,每3个3个分组,这样导致我们分组之后,小的数字变化不大,大的数字变化也不大,而我们希望小的数字在前面,大的数字在后面,这样可以减少我们的时间复杂度;希尔排序是插入排序的进阶版本,他多次调用插入排序,在插入排序上进行了改造,使其处理无序的数据时候更快。理论基础为直接插入排序。原创 2024-03-21 11:07:34 · 819 阅读 · 0 评论 -
八大排序算法之插入排序
从当前位置开始,从后往前找比当前数字小的,找到后插入到这个小的数字后面,在找的过程中,如果发现一个比当前数字大,同时将这个数字往后挪。原创 2024-03-21 10:58:45 · 344 阅读 · 0 评论 -
八大排序算法之快速排序
找到一个基准(第一个数据),从后往前找比基准小的数据往前移动,从前往后找比基准大的数据往后移动,重复前两步,直到找到基准位置, 这是快速排序的一次划分,之后多次调用一次划分,直到完全有序。原创 2024-03-20 09:31:06 · 299 阅读 · 0 评论 -
KMP算法
KMP算法可以说是BF算法的升级版BF算法i回退,但是KMP算法最大的特点就是i不回退,由于i不会退,所以KMP算法的时间复杂度为O(n+m)原创 2024-03-19 11:16:35 · 346 阅读 · 0 评论 -
字符串与BF算法
(1)在主串str的pos位置查找子串sub,找到返回下标,未找到返回-1(2)思想:相等继续比较,不相等回退,回退时i推到刚才的位置的下一个(i-j+1)j退到0(3)利用子串是否遍历完成,来判断查找是否成功,注:不能利用主串来判断(4)算法时间复杂度BF:O(n*m)原创 2024-03-19 11:07:27 · 430 阅读 · 0 评论 -
数据结构:链式队列
1.带头结点,队头为第一个数据节点,队尾在最后一个数据节点2.头结点为一个队头指针,一个队尾指针,增加队尾指针可以让入队时间复杂度为O(1)原创 2024-03-19 10:59:26 · 231 阅读 · 0 评论 -
链式栈基础
链栈栈顶:栈顶在表头(即第一个数据节点)(时间复杂度是O(1))(采用的是链表的头插法)原创 2023-11-29 14:34:15 · 900 阅读 · 0 评论 -
队列基础(循环队列)
和栈相反,队列(queue)是一种先进先出(first in first out,缩写为FIFO)的线性表.它只允许在表的一端进行插入,而在另一端删除元素.在队列中,允许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front).1)队列:先进先出的一种线性结构,入队(插入)的一端称为队尾,出队(删除)的一端称为队头2)队列的存储方式有两种,一种为顺序结构(顺序队列),两一种为链式结构(链式队列)原创 2023-11-29 18:45:00 · 925 阅读 · 0 评论 -
数据结构绪论
数据结构的基本含义,简单来说,数据结构就是研究数据(不仅仅是数值的数据)之间的关系以及操作。顾名思义,就是数据的结构,只有你清楚了这些结构如何表现如何处理问题的,你就会发现,数据结构不仅仅拘泥于某一种语言,它更多的是一种思想理念,这样你在实际的编程中你才能运用它,使你的代码更加高效。因为你心中有它,心中有数据结构,那么只要能熟能生巧,你就会自然而然的想到使用它,从而你的代码就会更加高效。原创 2023-11-23 20:59:36 · 582 阅读 · 0 评论 -
顺序表基础
数据结构中顺序表的结构原创 2023-11-23 20:53:59 · 1248 阅读 · 0 评论 -
顺序栈的基础
1.栈的特点:后进先出,后来的反而需要先服务(访问受限的线性表)2.栈又分为顺序栈和链式栈3.上面顺序栈是不定长的顺序栈,能自动扩容4.栈只能在一端进行插入和删除,插入和删除的这一端称之为栈顶,另一端称之为栈底;5.顺序栈的栈顶在尾部,因为入栈和出栈的时间复杂度为O(1)原创 2023-11-22 22:00:00 · 56 阅读 · 0 评论 -
静态链表基础
1.静态链表,利用顺序表模拟链表2.静态链表包含两条链表,一条为有效数据链表,另一条为空闲节点链表3.有效数据链表为带头结点的循环链表,且头节点在0号下标4.空闲数据链表为带头结点的循环链表,且头节点在1号下标5.静态链表的优点:和顺序表对比,插入删除不需要移动数据,O(1)6.静态链表的优点:和链表对比,不需要频繁的创建和删除节点7.静态链表的缺点:和顺序表对比,需要增加一个next8.静态链表可以动态增长,满后扩容,将扩容的内存添加到空闲链表;原创 2023-11-23 16:15:00 · 76 阅读 · 0 评论 -
双向链表的基础
双向链表其实和单链表一样,就是把两条方向的单链表都处理好就行.原创 2023-11-23 08:00:00 · 138 阅读 · 0 评论 -
循环链表的基础
循环链表其实和单链表是一样的操作,只是在处理的时候处理好尾节点即可,切记,遍历循环链表中不可出现NULL,若遍历的时候出现NULL就错了.原创 2023-11-22 09:45:58 · 309 阅读 · 0 评论 -
单链表的基础
单链表的结构,使用原创 2023-11-22 09:39:44 · 96 阅读 · 1 评论