
《数据结构》(C语言实现)
文章平均质量分 86
数据结构
你是我的光吗
这个作者很懒,什么都没留下…
展开
-
《数据结构》(10) - 排序算法(2)- 堆排序
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录堆排序提示:以下排序均以升序排列为例堆排序堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是通过建堆来进行选择数据。 要使用堆排序,首先要学习堆的向下调整算法,因为要使用堆排序,必须先建堆,而建堆的次数可以通过堆的向下调整算法得出。堆的向下调整算法(使用前提): 1.若想将其调整为小堆,那么根结点的左右子树必须都为小堆。 2.若想将其调整为大堆,那么根结点的左右原创 2021-09-12 16:23:11 · 328 阅读 · 1 评论 -
《数据结构》(9) - 排序算法(1)- 插入排序,希尔排序,选择排序,冒泡排序
文章目录排序概念及分类排序算法分类排序稳定性直接插入排序一、pandas是什么?二、使用步骤1.引入库2.读入数据总结排序概念及分类排序算法分类排序稳定性稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。提示:以下排序算法均以实现升序排列为例直接插入排序提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了原创 2021-09-08 20:22:29 · 341 阅读 · 0 评论 -
《数据结构》(8) - 链式二叉树的实现
文章目录前言结点设置二叉树的深度优先遍历前序遍历中序遍历后序遍历二叉树的层序遍历结点的个数叶子结点的个数二叉树的销毁前言二叉树的增删查改没有意义,所以这里不实现增删查改。结点设置创建链式二叉树的结点类型。typedef char BTDataType; //重命名结点中存储的元素类型,便于后续维护typedef struct BinaryTreeNode{ struct BinaryTreeNode* left;//指向左孩子的指针 struct BinaryTreeNode* righ原创 2021-08-28 16:59:36 · 350 阅读 · 0 评论 -
《数据结构》(7) - 树和二叉树
文章目录前言一、树概念及结构1.树的概念2.树的特点3.树的相关名词二、树的表示1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、树概念及结构1.树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上.原创 2021-08-27 16:05:44 · 684 阅读 · 0 评论 -
《数据结构》(5) - 栈
文章目录一、栈的介绍栈的概念栈的实现方式分析二、栈的实现栈创建初始化栈销毁栈入栈出栈获取栈顶元素获取栈中有效元素个数检测栈是否为空一、栈的介绍栈的概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。栈的实现方式分析栈的实现一般可以使用数组或者链原创 2021-08-26 15:16:34 · 439 阅读 · 0 评论 -
《数据结构》(4) - 线性表之双链表
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、单链表的问题及思考二、链表结构分析三、双向链表的表示和实现1.函数声明2.接口函数详解一、单链表的问题及思考在上一节,我们学习了单链表,了解了单链表相比于顺序表有更好的存储功能,但是,单链表仍然存在一些缺陷:例如尾删,任意位置插入,任意位置删除的时间复杂度但是O(N)查找数据时不能从后往前,只能从头又开始遍历查找尾。找不到前驱,都等等。这时,就可以引入一个新的链表:带哨兵位头节点的双向带头循环链表,这里简称双链原创 2021-08-23 22:41:52 · 146 阅读 · 0 评论 -
《数据结构》(3) - 线性表之单链表
文章目录一. 顺序表的问题及思考二.单链表表示和实现1. 链表的概念及结构2.单链表的实现3.对各个接口函数的详细解释一. 顺序表的问题及思考在上一节,我们学习了顺序表,但是我们还是要思考,用顺序表来存储数据行不行呢?顺序表的问题及思考:中间/头部的插入删除,时间复杂度为O(N)增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数原创 2021-08-20 22:44:32 · 122 阅读 · 0 评论 -
《数据结构》(2) - 线性表之顺序表
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、概念及结构二、顺序表接口实现1.静态顺序表接口实现2.动态顺序表接口实现前言线性表:线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储提示:以下是本篇文章正文内容,原创 2021-08-17 22:50:47 · 99 阅读 · 0 评论 -
《数据结构》(1) - 时间复杂度与空间复杂度
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一.什么是时间复杂度和空间复杂度1.算法效率2.时间复杂度3.空间复杂度二、时间复杂度1.时间复杂度表示2.大O的渐进表示法3.时间复杂度经典题目二.空间复杂度1.空间复杂度表示2.空间复杂度经典题目一.什么是时间复杂度和空间复杂度1.算法效率算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法原创 2021-08-15 20:48:48 · 286 阅读 · 0 评论