堆排序

堆排序分为变成大根堆还是小根堆;

大根堆就是跟节点大于左右子节点就ok,小根堆跟它相反,根节点小于左右子节点;

有一个无序的树(就是你要排序的数组,放在树里),你想要对它进行排序的话,首先要确定从大到小还是从小到大,因为这个分别对应大根堆还是小跟堆;

随便说一个,就说变成大根堆(从大到小):首先一个无序的树,你找到最下面一层的节点,每两个子节点或一个子节点和他们的父节点都看成一个单位,在这一个单位中进行变化,变成我们要的大根堆,就是把这三个数或者两个数中大的树变成父节点,然后再把交换的两个节点分别对应的另两个单元依次像这样维护一下,因为你这个单元的父节点可能是别的单元的子节点,同样你这个单元的子节点也可能是别的单元的父节点,所以最后维护完之后为大根堆;

然后每次取出根节点放在结果数组中,然后再把树中最下面的数放在根节点的位置上,再进行维护;

时间复杂度为nlogN;

因为总共取n个数,每次维护为logN,所以为nlogN;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值