数据结构
文章平均质量分 53
本专栏的数据结构分为C语言篇和C++篇
Zonda F
洗洗睡吧!
展开
-
数据结构的排序——1.直接插入排序
1.依次插入排序依次插入指的是在一个有序数组当中依次插入一个新的数据,这样在所有的数据都插入之后,这个数据就是一个有序的数组了。另外依次插入数据排序的思想和我们玩扑克牌时依次拿牌后整理牌的思路很是相似。将其抽象到咱们的排序当中就是如下的思路:例如我们要在2 3 6 8当中插入5这个数据时,我们的排序的思路将是如下面图所示让我们来看看上面的四步排序,我们将尾部的数据数组下标记作end,首先我们将5和尾部数据8进行比较,由于8大于5所以将8和5的位...原创 2021-11-17 16:58:12 · 767 阅读 · 0 评论 -
数据结构的排序——2.希尔排序
1.前言 和上面的直接插入排序一样,希尔排序也是一种插入的排序,更加准确的来说希尔排序是直接插入排序的一个升级版,是在直接插入排序上进行修改然后效率更高的一种插入排序。2.原理介绍在直接插入的排序当中,没一次都是后一个数和前一个数进行比较,满足条件的话就加一,然后再是后一个数与前一个数比较.....直到执行结束后退出。执行的间隔是1,而再希尔排序当中,执行的间隔是大于1的数,本次当中我们设定的间隔是5(这个间隔数定在1到数据的总和之间),如下面的图所示,在下面的10...原创 2021-12-26 20:02:52 · 509 阅读 · 0 评论 -
二叉树建堆(向上调节建堆+向下调节建堆)
1.介绍 建堆在二叉树当中有着非常重要的地位,尤其是在堆的排序当中,其中对于堆的建立过程当中又分成向下对堆进行调节和对堆作向上调节。这两种地位相当,在许多的地方各自又有相当重要的存在。本文重点讲述这两种方式来进行建堆,为后续的堆排序做一个重要的基础。2.1.向上调节建堆********************************向上调节和向下调节是 分两次写的,所以这两种形式里面的一些函数可能会有一些不同哦******************************首先我...原创 2021-12-10 21:12:27 · 719 阅读 · 0 评论 -
TopK问题的实现(C语言版)
1.介绍 我们可能经常会看到这样的一个问题,让我们在一组数据当中找到这组数据的前n个数据,这些数据可能是最小前n个数,或者是最大的前n个数。这也就是经典的TopK问题,现在就让我们进入TopK的世界。我们可以将其分成五步来进行1.首先我们可以制造一个TopK验证数据2.先将前n个数据进行建堆3.将剩余的N-n个数据“进”堆4.将最大的前n个数据给筛选出来5.建立大堆将这n个数据进行排序2.TopK的实现2.1.制造一个TopK验证数据int*...原创 2021-12-05 19:47:43 · 662 阅读 · 0 评论 -
数据结构——顺序表(SequenceList)
1.何为顺序表线性表的顺序结构表示指的是用一组地址连续的存储单元依次存储线性表的数据结构。2.顺序表组成顺序表可以看作是一组连续存储的有限的数组结构,我将其表示成一个结构体类型,其中这个结构体的类型里面由三个部分组成,实时大小size,容量大小capacity,头部指针Head。由下图有进行表示其中这里面比较重要的就是每个数组里面所存储的部分,这个存储的部分可以由每一种数据类型所组成(单每一次所存储的必须是同一类型),例如整型,字符型,浮点型,结构体类...原创 2021-11-04 16:35:40 · 880 阅读 · 0 评论 -
时间复杂度和空间复杂度
复杂度同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进法。其中算法复杂度分为:时间复杂度和空间复杂度。 时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。算法的时间复杂度和空间复杂度是一个函数,它定性描述了该算法的运行时间和所占的空间。这是一个关于代表算法输入值的字符串的长度的函数。1.时间复杂度时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行...原创 2021-10-16 11:43:33 · 94 阅读 · 0 评论