堆排序
文章平均质量分 87
creative_mind
这个作者很懒,什么都没留下…
展开
-
百亿位富豪的苦脑,Top-k问题求解
情景引入:假如你处在的世界有百亿个富豪,你是这个世界一位富豪,想知道百亿个富豪中最富有的前10位!因为大根堆只能找到最大的那一个!(铁汁们可以自己思考一下!然后,我们用向上调整法建小根堆,在fscanf读取,直到找到最大的那一个数!printf("最大前black数据为!printf("请输入你要找的前几个数!哈哈,你请了一位大师,它就是对排序中的Topk!注意大家不要想我一样写那么那么大的数,哈哈哈哈哈。//创建前black个数据组成的小堆。今天,就简单简单分享一下吧!我们要改变其中几个值,以方便检查!原创 2024-03-12 22:29:51 · 874 阅读 · 5 评论 -
堆排序--向上向下调整创建堆方法的复杂度(数学错位相减法)以及大堆升序和小堆降序二种方式
那我们来用数学的角度来分析一下他们的复杂度!注意:时间复杂度是从最坏的情况来看的!要对二叉树的性质有了解!首先,我们从向上创建堆的角度来看(我愿意称为多乘多)如图,是一个树形结构;ok,老铁我们来看。我们把总节点数记为N; h为树的层数(把根节点记作为第一层); F(h)为该种创建方法下最坏要进行交换的次数!注意:第二层要交换的次数为1次,第三层交换次数为2次,.......第h层要交换的次数为h-1次所以我们写出, F(h)=2^1*1 + 2^2*2 + 2^3*3 + 2^4*4 + 2^5*原创 2024-03-11 00:01:53 · 944 阅读 · 7 评论 -
独特好解之排序方法--简单基础堆排序
相信数组大家都不陌生,我们再学习栈的时候,就是通过数组来实现的,我们创建的结构体,数组指针,以及入栈(扩容),出栈(空间是否为1的分情况讨论)等操作其实在堆排序中也能遇到!完全二叉树:深度为k,有n个节点的二叉树当且仅当其每一个节点都与深度为k的满二叉树中编号从1到n的节点一一对应时,称为完全二叉树。满二叉树:如果一棵二叉树只有度为0的节点和度为2的节点,并且度为0的节点在同一层上,则这棵二叉树为满二叉树。节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;(以我们push(5)为例)原创 2024-03-09 00:06:10 · 951 阅读 · 3 评论