![](https://img-blog.csdnimg.cn/20201122162135650.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
算法导论阅读
-Xavier-
这个作者很懒,什么都没留下…
展开
-
C++实现桶排序(基于链表)
原理: 桶排序是时间复杂度为线性的排序方法,它的实现主要基于指针数组构成的链表,算法把输入数组的元素按照值的大小等分为个区间第个区间的元素范围是到 所以如果我们要将值为的元素放入桶中首先要确定桶的序号,根据上面的描述,桶的序号为,因为数组的编号从0开始,至n-1结束,因此C++实现的这部分代码为 float gap = float(scope)/ build_num; int index = trunc((*(arr + i) - minimum - 1) / gap); 其中*(arr+i)是原创 2020-10-29 21:49:54 · 757 阅读 · 0 评论 -
堆排序及最大优先队列(C++实现)
堆在本质实现上是一个数组,所有对堆的操作都是通过数组下标来实现的。但抽象来看,它可以被看成一颗近似的完全二叉树,树上的每一个节点对应数组中的一个元素。 堆分为最大堆和最小堆,它们对树上的节点最初了要求:最大堆要求父节点的元素大小大于等于子节点的大小,而最小堆则相反。上述数组经过最大堆堆化后呈现如下的树状结构: 为了访问父节点,和左右子节点,我们需要定义操作PARENT(i),LEFT(i),RIGHT(i)来根据二叉树的性质得到该节点的访问下标。在大多数计算机上,通过将i的值左移一位,LEFT过原创 2020-10-18 17:05:53 · 472 阅读 · 0 评论