
数据结构
文章平均质量分 80
sakura0908
未来的一个小小码农
展开
-
【数据结构-C语言】快速排序,希尔排序
快排是一种递归思想的排序算法,先比较其他的排序算法,它需要更多内存空间,但快排的语句频度是最低的,理论上时间效率是最高的。快速排序的基本思路是:在待排序序列中随便选取一个数据,作为所谓“支点”,然后所有其他的数据与之比较,以从小到大排序为例,那么比支点小的统统放在其左边,比支点大的统统放在其右边,全部比完之后,支点将位与两个序列的中间,这叫做一次划分(partition)。原创 2023-03-04 15:11:58 · 316 阅读 · 0 评论 -
【数据结构-C语言】冒泡排序,插入排序,选择排序
排序是处理数据的一种最常见的操作。所谓排序就是将数据按某字段规律排列,所谓字段就是数据节点的其中一个属性。比如一个班级的学生,其字段就有学号、姓名、班级、分数等等,我们既可以针对学号排序,也可以针对分数排序。稳定性:在一组无序数据中,若两个待排序字段一致的数据,在排序前后相对位置不变,则成排序算法是稳定的,否则是不稳定的。内排序与外排序:如果待排序数据量不大,可以一次性全部装进内存进行处理,则称为内排序,若数据量达到无法一次性全部装进内存,而需要将数据暂存外存,分批次读入内存进行处理,则称为外排序。原创 2023-03-04 14:54:52 · 531 阅读 · 0 评论 -
【数据结构-C语言】顺序队列,链式队列
队列是最常见的概念,日常生活经常需要排队,仔细管擦和队列会发现,队列是一种逻辑结构,是一种特殊的线性表。特殊在只能在固定的两端操作线性表。只要满足上述条件,那么这种特殊的线性表就会呈现一种“先进先出”的逻辑,这种逻辑就被称为队列。由于约定了只能在线性表固定的两端进行操作,于是给队列这种特殊的线性表的插入删除,起个特殊的名称:队头:可以删除节点的一端队尾:可以插入节点的一端入队:将节点插入到队尾之后,函数名通常为enQueue()出队:将队头节点从队列中剔除,函数名通常为outQueue()原创 2023-03-03 19:47:12 · 809 阅读 · 0 评论 -
【数据结构-C语言】顺序栈,链栈
由于约定了只能在线性表固定的一段进行操作,于是给栈这种特殊的线性表的“插入”、“删除”,起了下面这些特定的名称:栈顶:可以进行插入删除的一端栈底:栈顶的对端入栈:将节点插入栈顶之上,也称为压栈,函数名通常为push()出栈:将节点从栈顶剔除,也称为弹栈,函数名通常为pop()取栈顶:取得栈顶元素,但不出栈,函数名通常为top()基于这种固定一端的操作的简单约定,栈获得了”后进先出“的基本特性,最后一个放入的元素,最先被拿出来原创 2023-03-03 16:10:25 · 251 阅读 · 0 评论 -
【数据结构-C语言】双向循环链表
对链表而言,双向均可遍历是最方便的,另外首尾相连循环遍历也可打打增加链表操作的便捷性。因此,双向循环链表,是在实际运用中最常见的链表形态。原创 2023-03-02 23:54:44 · 1955 阅读 · 0 评论 -
【数据结构-C语言】单向链表,循环单向链表
顺序表:顺序存储的线性表链式表:链式存储的线性表,简称链表由于顺序表的缺点(数据连续存储),顺序存储的数据因为挤在一起而导致需要成片移动,那很容易想到的解决方案是将数据离散地存储在不同内存块中,然后再用指针将他们串起来,这种朴素的思路所形成的链式线性表,就是所谓的链表。顺序表和链表存在的基本样态如下图所示原创 2023-03-02 22:02:22 · 2868 阅读 · 0 评论 -
【数据结构-C语言】顺序表
对于一组拥有n个数据元素的线性表,其严格数学定义是:其中任何一个数据元素a(i),有且仅有一个直接前驱a(i-1),有且仅有一个直接后继a(i+1)。首元素a0无直接前驱,尾元素a(n-1)无直接后继。满足这种数学关系的一组数据,当中的数据是一个挨着一个的,常被称为一对一关系。反之,如果数据之间的关系不是一对一的,就是非线性的。原创 2023-03-02 17:02:08 · 331 阅读 · 0 评论