数据结构
文章平均质量分 69
五花肉村长
流水不争先,争的是滔滔不绝。
展开
-
归并排序-加餐
我之前讲的一些常见的排序都是内排序,他们的排序思想适应的是数据在内存中,支持下标的随机访问。归并排序的思想不需要随机访问数据,只需要依次按序列读取数据,所以归并排序既是一个内排序,也是一个外排序。原创 2024-10-17 21:02:14 · 318 阅读 · 0 评论 -
快速排序-加餐
决定快排性能的关键点是每次单趟排序后,key对数组的分割,如果每次选的key基本都二分居中,那么快排的递归树就是一棵均匀的满二叉树,性能达到最佳。但是在实践中虽然不可能每次都是二分居中,但是性能也是可控的,但是如果每次选到最小或者最大值,就会划分成0和N-1个子问题,时间复杂度就会变成O(N^2),就比如数组是有序的就会出现这种情况。在之前相关的章节,我们用了三数取中随机选取key和小区间优化来解决这个问题,虽然解决了大多数问题,但是还是有一些场景没能解决,就比如数组中有大量重复的数据。原创 2024-10-16 19:48:48 · 586 阅读 · 0 评论 -
数据结构-排序2
1. 快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序2. 时间复杂度:O(N*logN)3. 空间复杂度:O(logN)4. 稳定性:不稳定1. 归并的缺点在于需要O(N)的空间复杂度,思考更多的是解决在磁盘中的外排序问题。2. 时间复杂度:O(N*logN)3. 空间复杂度:O(N)4. 稳定性:稳定。原创 2024-10-15 09:36:09 · 976 阅读 · 0 评论 -
数据结构-排序1
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次 序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排 序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不断地在内外存之间移动数据的排序。原创 2024-10-08 21:37:58 · 1031 阅读 · 0 评论 -
二叉树—相关结构
叶子结点:没有孩子的节点。原创 2024-10-07 11:47:21 · 407 阅读 · 0 评论 -
二叉树的遍历
先简单手搓一个二叉树,快速进入本次的操作学习。}BTNode;如图所示,一棵二叉树,上述代码并不是创建二叉树的方式,真正创建方式后序详解重点讲解。再看二叉树基本操作前,再回顾下二叉树的概念,二叉树是:1. 空树2. 非空:根结点,根结点的左子树、根结点的右子树组成的。原创 2024-10-07 11:24:31 · 870 阅读 · 0 评论 -
顺序表专题和应用
具有相同特性的数据结构的集合。物理结构:不一定连续逻辑结构:一定是连续的。原创 2024-09-15 15:51:25 · 295 阅读 · 0 评论 -
带环链表问题
/相遇while(meet!=head)原创 2024-05-09 20:51:13 · 689 阅读 · 0 评论 -
数据结构 1
算法(Algorithm)就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。3.数据结构和算法的书籍资料学习完数据结构知识,可以去看《剑指offer》和《程序员代码面试指南》。4.算法的效率衡量一个算法的好坏,要从它的程序的时间复杂度和空间复杂度两方面来分析。时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。5.时间复杂度。原创 2024-09-14 12:37:02 · 650 阅读 · 0 评论 -
单链表专题
链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序来实现的,链表也是线性表的一种。原创 2024-09-15 21:49:39 · 422 阅读 · 0 评论 -
双链表专题
这里的双向链表我们称之为带头双向循环链表。内置结构:以整形为例,包括存储的数据,后继指针和前驱指针int data;int* next;int* prev;这里的带头是指具有哨兵位节点,哨兵位节点不存储任何有效元素,相当于“”放哨的”。双向链表的增删查改不能改变哨兵位,哨兵位存在的意义:避免循环链表出现次循环。原创 2024-09-17 14:16:23 · 218 阅读 · 0 评论 -
数据结构-栈
栈:栈是一种特殊的线性表,它只允许在固定的一端进行元素的插入和删除操作。进行数据操作的一端我们称之为栈顶,那另一端被称为栈底。栈的元素都遵循后进先出LIFO (Last In First Out)的原则。压栈:是指栈的插入数据的操作,也叫进栈和入栈。出栈:是指栈的删除数据的操作。压栈和出栈的数据操作都是在栈顶完成的。原创 2024-10-01 09:58:42 · 611 阅读 · 0 评论 -
数据结构-队列
队列:是一种特殊的线性表,只允许在一端进行数据的插入操作,在另一端进行数据的删除操作。队列的特性是队里的元素都遵循先进先出FIFO(First In First Out)的原则。入队列:进行数据插入的一端被称为队尾。出队列:进行数据删除的一端被称为队头。原创 2024-10-01 11:07:33 · 446 阅读 · 0 评论 -
栈和队列的相互实现(C)
栈后进先出,队列先进先出,这里我们要用两个队列实现栈。LeetCode 225.用队列实现栈 (C语言,要自己造轮子,造个栈的结构出来)例如,队列先进数据是1234,然后出数据遵循栈的后进先出就是4321.原创 2024-10-02 17:19:06 · 379 阅读 · 0 评论 -
二叉树--堆
普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结 构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统 虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。原创 2024-10-04 20:32:32 · 1085 阅读 · 0 评论 -
树--二叉树
树是一种非线性的数据结构,它是由n(n>=0)个有限节点组成的一个具有层次关系的集合,它的外形像像一棵倒挂的树,根向上,叶子是向下的,所以我们称之为树。树有一个特殊节点,就是它的根节点,它的根节点是没有前驱节点的。除根结点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继。所以,树是递归定义的。树的数据结构中,它的子树之间是不能有交集的,不然就破坏了树的结构,不是树了。原创 2024-10-03 11:25:27 · 666 阅读 · 0 评论
分享