
数据结构
文章平均质量分 89
介绍关于数据结构的知识
轻颂呀
努力学习编程!
展开
-
排序——归并排序
所以有解决这道题就要用比较快的排序,考虑到该题的特殊性用归并排序解决是最合理的。在排序时不能在原数组上进行排序,解决这个问题其实只需要开辟一个与原数组大小一样的空间,在排完一个后把该数据存入开辟的数组中,当这次序排完后把数据拷贝到原数组中即可。将已有序的子序列合并,得到完全有序的序列。上面的代码就只能对2的倍数进行排序如果不是就无法排序,下面的图片是对一个只有10个数据的序列下标访问情况。,先让一个序列不断对半拆分(递推),拆到只有一个数据的序列时(递推结束条件),开始回归排序(回归)。原创 2024-07-06 17:56:03 · 448 阅读 · 0 评论 -
排序——快速排序
基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后左右子序列重复该过程,直到所有元素都排列在相应位置上为止。最后的一两层里面包含的数据并不是很多,所以我们可以写一个判断,到特定的范围内用插入排序的方式来排序(这里我写的是当数据量小于10时),这样它的深度会变小很多。先让end走遇到比基准值小的停下来,然后让begin走遇到比基准值大的停下来,之后让它们交换位置。快速排序的非递归实现是基于栈实现的。原创 2024-06-18 21:34:31 · 992 阅读 · 0 评论 -
排序——希尔排序
当序列越有顺序时,插入排序的时间效率就越高。时间复杂度:O(N^2)(虽然时间复杂度是N^2,那是在逆序的序列情况下,在现实中这种情况一般不会出现)空间复杂度:O(1)gap>1:预排序,目的是让序列变得更有序。时间复杂度:O(N^1.3)空间复杂度:O(1)原创 2024-06-16 18:27:54 · 789 阅读 · 0 评论 -
二叉树的链式结构实现
该篇是在的基础上的。该篇会有点抽象大家要自己多画画图自己感受一下。现在我们开始吧!在学习二叉树基本操作时,我们需要先有一个现成的二叉树。来方便我们练习。因为现在我们对二叉树的理解也并不是很深入。在这里创建一个树是方便让我们理解。等我们学的差不多的时候,我们来真正的创建二叉树。下图是我创建二叉树的结构。在二叉树的介绍及堆这篇文章中的二叉树概念可以发现二叉树定义是递归式的,因此下面操作中基本都是按照该概念实现的。原创 2024-06-03 16:10:47 · 846 阅读 · 0 评论 -
二叉树介绍及堆
找到它的两孩子中小的那个,在让这个小的孩子与它进行比较如果孩子大于它则退出,如果小于则交换位置,重复上述操作直至循环结束或跳出循环。先建一个K个数据的小堆,然后让后面的N-K个数据跟该小堆的根结点进行比较,如果大于则进行交换,然后向下调整。先建一个大堆,然后让第一个结点的数据与最后一个结点交换,拿出最后的那个结点,然后再让根结点向下调整。大家应该注意到了哈,这次建堆的方式有点不一样,这是先找到树的最后一个根结点(画四角星的是树的最后一个根结点)4. 若规定根结点的层数为1,具有n个结点的满二叉树的深度,原创 2024-05-29 18:07:51 · 829 阅读 · 1 评论 -
时间复杂度
我们在这里就是将算法中的基本操作的执行次数,认为是算法的时间复杂度。大家可能注意到了底数为什么不写2,实际上2是最常见的可以不写,但如果是其它底数就要写。解释:假设某个算法的执行次数是F(N)=N^2+N。因为只保留最高项所以把N给删掉,即时间复杂度为O(N^2)。O(1) < O(logN) < O(N) < O(N^2) < O(2^N)(越往右越低)。解释:假设某个算法的执行次数是F(N)=2N。时间复杂度是用大O的渐进表示法来表示(大O符号:是用于描述函数渐进行为的数学符号)。原创 2024-05-27 11:24:26 · 613 阅读 · 0 评论 -
线性表—栈的实现
创建一个栈,只让左括号入栈,让右括号与栈里的数据匹配。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。如果top是0,就要后置了。一般来说top应该也是0,这里是-1是为了确保top是栈顶数据的。然后返回下标top对应的数据即可。将arr置为空指针,top置为-1,capacity置为0。然后只要让top--即可。如果top=-1则返回true,否则返回false。以下的内容如果你对顺序表的实现熟悉的话就很简单。栈顶和栈底并不是固定的,这是人为决定的。直接返回pst->top==-1即可。原创 2024-05-14 11:19:52 · 701 阅读 · 0 评论 -
通讯录项目—顺序表实现
下面是通讯录要实现的功能。能够保存用户信息:名字、性别、年龄、电话、地址等。增加用户信息。删除指定用户信息。查找用户信息。修改用户信息。显示用户信息。原创 2024-05-08 20:33:11 · 1130 阅读 · 0 评论 -
线性表—单链表实现
链表是一种物理存储单元上非连续、非顺序的存储结构,由一系列节点(链表中每一个元素称为节点)组成。单链表是一种链式存取的结构,它由一个个节点组成。节点由两部分组成:数据域和指针域。数据域用于存储数据,指针域用于指向下一个节点的地址。最后一个节点的指针域指向NULL。原创 2024-05-03 10:51:21 · 841 阅读 · 1 评论 -
线性表—顺序表实现
线性表是n个具有相同特性的数据元素的有限序列。线性表在逻辑结构上一定是连续的,但物理结构不一定连续。顺序表是在计算机内存中以数组的形式保存的线性表。原创 2024-04-25 09:38:02 · 1011 阅读 · 1 评论