![](https://img-blog.csdnimg.cn/direct/95468e159d2c4a2780bc5fe1bdd2e891.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构1.0
文章平均质量分 93
浅浅认识数据结构
X_chengonly
真人。。。。。。。
展开
-
【数据结构1.0】计数排序
读者老爷好,本鼠鼠最近学了计数排序,浅浅介绍一下!计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用,是非比较排序的一种!这个排序算法不难理解,万物皆可举例,我们举例讲解啊!很久很久以前,有一只可爱的肥龙猫,叫做冬冬。有一天冬冬的男朋友给冬冬出了一个题目:有一组数组a如下,要冬冬用排序算法排成升序。原创 2024-05-20 00:48:02 · 846 阅读 · 0 评论 -
【数据结构1.0】归并排序
本博客以排升序为例介绍归并排序!我们先看一个问题:有两组均为升序的数组要合并到一组数组当中,要求合并后的数组也是升序的,怎么办?办法:从头开始遍历两组数组,找“小”尾插到合并数组当中。举例如图:这其实是归并的思想!归并排序的基本思想:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有 序,再使子序列段间有序。原创 2024-05-18 21:40:58 · 368 阅读 · 0 评论 -
【数据结构1.0】快速排序
最近学习了快速排序,鼠鼠俺来做笔记了!本篇博客用排升序为例介绍快速排序!原创 2024-05-14 21:42:32 · 673 阅读 · 0 评论 -
【数据结构1.0】选择排序
鼠鼠前面的博客介绍过选择排序是常见的排序算法,选择排序有但不限于直接选择排序和堆排序!那么鼠鼠今天浅谈一下选择排序!鼠鼠本博客用排升序来介绍选择排序!选择排序的基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。原创 2024-05-13 23:24:38 · 310 阅读 · 0 评论 -
【数据结构1.0】希尔排序
鼠鼠最近学习了希尔排序,做个笔记!希尔排序也是插入排序的一种捏!本篇博客也是用排升序来举例捏!希尔排序是基于直接插入排序的,是由大佬D.L.Shell提出的。原创 2024-05-06 21:56:45 · 1002 阅读 · 3 评论 -
【数据结构1.0】直接插入排序
最近浅学了直接插入排序,写个博客做笔记!笔记功能除外若能对读者老爷有所帮助最好不过了!直接插入排序是插入排序的一种,那么介绍直接插入排序之前先介绍一下常见的排序算法!原创 2024-05-05 20:32:33 · 881 阅读 · 0 评论 -
【数据结构1.0】二叉树
我们在前两篇博客中主要介绍了堆及其应用,针对的对象堆是完全二叉树,存储方式采用顺序结构存储的方式。那么好的,这篇博客我们浅谈二叉树的链式存储,针对的对象是二叉树,并不局限于完全二叉树了!我们先来回顾以下二叉树的定义:一棵二叉树是结点的一个有限集合,该集合:1. 或者为空(就是说空树也是二叉树)。2. 不是空树:由一个根节点加上两棵别称为左子树和右子树的二叉树组成。说简单点呢,二叉树是一颗特殊的树,这颗树的度最大为2,就像是对这颗树的节点进行了计划生育,最多只能生两个节点宝宝。原创 2024-04-09 00:20:13 · 1042 阅读 · 1 评论 -
【数据结构1.0】堆的应用
各位读者老爷好,鼠鼠又来了捏!鼠鼠上一篇博客介绍的堆,那么今天来浅谈以下堆的应用,那么好,我们先来看两个问题:1.如果有一组乱序的数组数据,希望你将这组数组的数据排成升序或降序,该怎么排?2.如果有1万个乱序的数据,希望你找出其中最大的前5个,该这么找到捏?对于问题1,当然可以使用冒泡排序,但是冒泡排序的时间复杂度是O(N^2),显然不是一个很好的方法!鼠鼠我呀在这里介绍一个解决办法:堆排序!堆排序的时间复杂度是O(N*logN),相对于解决办法之冒泡排序好用的不是一星半点捏!原创 2024-04-01 00:39:48 · 704 阅读 · 1 评论 -
【数据结构1.0】二叉树
int size;}Heap;这里重命名int为HeapDataType,大大方便后续代码的维护!用a指向后来动态开辟的连续内存,该连续内存用来存储堆的数据,size用来记录堆的数据个数或者指向堆最后一个数据的下一个,capacity用来记录连续内存可放入数据的容量。这里用一个结构体来定义堆如代码所示,定义的跟顺序表一样,但是我们这里表示的堆对数据的摆放要求是大堆或者小堆,而顺序表就没有这个要求!原创 2024-03-23 01:23:25 · 680 阅读 · 5 评论 -
【数据结构1.0】队列
QNode;int k;}Queue;老样子我们将int重命名成QDatatype,方便以后代码的维护。让后定义并重命名结构体QNode充当队列节点 ,这些节点根据数据元素的入队列或者出队列按需申请或者释放。QNode中成员_data用来存放数据元素,QNode中成员_next用来链接下一个节点。原创 2024-03-07 22:10:08 · 1466 阅读 · 4 评论 -
【数据结构1.0】栈
int top;}Stack;方便后续代码的维护,我们先不妨将int重命名成STDataType。由于实现动态生长的栈我们需要一个STDataType*类型指针a维护以后动态申请的空间(用来存放需存储的数据元素的)。用top指向栈顶元素的下一个元素(可以理解成元素个数)。用capacity记录以后动态图申请空间的大小。将a、top和capacity用结构体包起来并重命名成Stack。原创 2024-03-06 21:38:04 · 928 阅读 · 1 评论 -
【数据结构1.0】双向链表
ListNode;由上分析可知,该链表节点需要包含三个数据域,所以我们定义结构体,结构体成员data用来存储需存储数据、结构体成员next用来存储后一个节点地址、结构体成员prev用来存储前一个节点地址。至于为什么要把int重命名成LTDataType,那是因为如果需存储数据的类型如果有所变化的话,我们只需更改此处的int更改成需存储数据的类型即可,极大方便后续的代码维护。原创 2023-12-02 04:00:13 · 978 阅读 · 2 评论 -
【数据结构1.0】单链表
各位读者老爷好,鼠鼠我又来了哈。鼠鼠我呀现在来基于C语言实现以下单链表,希望对你有所帮助!鼠鼠我上次浅谈了顺序表。但是吧,Any coin has two sides。顺序表有一些缺陷:1.尾部插入效率还不错。头部或者中间插入删除,需要挪动数据,效率低下。2.顺序表满了以后只能扩容。扩容是有一定消耗的,扩容一般是存在一定的空间浪费:一次扩得越多,可能浪费越多;一次扩得少,可能需要频繁扩容。当然,顺序表也有它的优势:得益于它的物理空间连续,顺序表支持随机的下标访问。原创 2023-11-28 02:37:30 · 1176 阅读 · 2 评论 -
【数据结构1.0】顺序表
int size;//有效数据//空间容量}SeqList;根据上面定义的顺序表,咱们创建一个顺序表s1,并实现该顺序表一系列接口实现。SeqList s1;//顺序表。原创 2023-11-12 22:19:56 · 1149 阅读 · 5 评论 -
【数据结构1.0】算法的时间复杂度和空间复杂度
数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。其实简单来说吧。数据结构就是在内存中管理数据。拓展:1.什么是数据库?简单来说:数据库就是在磁盘中管理数据。2.内存和磁盘的异同同:内存和磁盘都是电脑的两个核心存储介质,都是存储数据的两个硬件。异:内存的速度快,需要带电存储;磁盘的速度(相对)慢,不带电存储。原创 2023-11-11 03:40:59 · 1106 阅读 · 1 评论