![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 85
我的博尔赫斯
这个作者很懒,什么都没留下…
展开
-
排序入门—插入排序和希尔排序
依然拿上述数组(排成升序)举例这个数组中的1就是我们抓的第一张牌,显而易见的是第一张牌不用排序,我们接着抓牌,抓到第二张牌是3,抓到后与1进行比较,3不比1小则排在后面,接着抓到9,9不比3小,排在后面,抓最后一张牌是3,3比9小则要进行比较我们先拨开9这张牌,看到9的前面排着一个3,3不比3小,所以后面的这张3就放在前面那张3的后面,9的前面,那么抓牌就完毕了。可以看看动图来理解一下过程。对于插入排序,当序列本身比较有序时,这种排序的效率还是挺高的,但是如果处理的序列非常无序,时间效率则会极其低下。...原创 2022-07-23 23:56:15 · 460 阅读 · 1 评论 -
数据结构中的堆排序算法
如果子节点比父节点大,那么则停止这个过程(因为原本的数组就是一个堆,是满足堆的性质的,如果这个数据比其父节点大,那么一定比它的祖先大,所以不用再进行调整),这就是向上调整算法。向上调整算法是由插入数据引出的,而向下调整则是由删除数据引出的。以这课二叉树为例解释一下向上调整算法,此时的child是最后一个节点10,父节点是28(根据子节点和父节点的关系计算,可以看上一篇文章),28比10大,因为是小堆所以要交换二者的值,并将原来28的位置(即parent)赋给原来10的位置(即child)。......原创 2022-07-19 20:35:02 · 467 阅读 · 0 评论 -
二叉树—堆
在插入数据到堆中时要注意插入元素是否会使得堆不再为堆(因为堆的性质是父节点要大于或小于子节点),所以在插入数据之后需要向上检索其父节点是否不满足当前堆的性质,如果是则交换父子数据,接着循环,直至满足为止。二叉树也可以选择链表和数组表示,当二叉树是完全二叉树或者满二叉树时,用数组表示更优,因为用数组找寻子节点不需要指针,仅需要数组下标即可,详情请查看上篇文章,附上传送门。堆顶元素的删除并不是简单将数组元素整体往前挪动一位那么简单,如果仅仅是挪动,那么会破坏堆结构,父子间的关系可能会改变。......原创 2022-07-17 18:19:02 · 503 阅读 · 1 评论 -
树和二叉树(C语言)
一. 树的定义 有一个特殊的结点,称为根结点,根节点没有前驱结点 除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集 合Ti(1D,就死循环了。二.树的...原创 2022-07-13 17:15:11 · 145 阅读 · 0 评论