堆排序与桶排序
来源:互联网 发布:黑龙江农垦网络 编辑:程序博客网 时间:2024/05/18 15:53
堆排序(数组存储)
1.堆是一个完全二叉树。
完全二叉树的定义是除了最后一层没放满,以及最后一层的叶子都是偏左放置。
2.每个节点大于或等于它的任意一个孩子。
关于排序问题,我们首先要知道:
1.双亲节点位置为(i - 1)/ 2
2.孩子节点位置为 左孩子: ( 2 * i ) + 1
右孩子 : ( 2 * i ) + 2
下面就是具体的实现
我们了解到堆排序是在数组中的实现,每次排序宏观上是将最大的放到数组最后
看上去和选择排序一样,但是实现的方法不一样,堆排序的算法效率到达了O(nlog(n))
每次删除最后一个元素,也就是最大的元素,返回此元素
我们就按照二叉树来说,每次我们取到树的root,作为二叉树,
那么root上肯定放的是最大元素,将root取出
root位置上的元素放的是它孩子结点中最大的那个元素
循环判断,使我去掉了root后,仍然是一个完全二叉树
最后,root到最后一个,返回root元素,并删除。
桶排序
算法效率为O(dn)
d为位数的最大值
0 0
- 堆排序与桶排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 【堆与堆排序】
- 堆与堆排序
- 堆与堆排序
- git branch用法总结
- DB2根据某一字段去重
- FAILED: Error in metadata: MetaException(message:Got exception: java.net.ConnectException Call to ha
- hdu4472 递推
- hdu 1205 吃糖果
- 堆排序与桶排序
- 黑马程序员———多线程
- Unix 网络编程 select 与 epool 函数的区别
- linux下基于QT openCV的图像处理
- 只能录话筒声音不能录播放内容的解决方法
- 异步串行通讯和同步串行通讯区别
- LeetCode 罗马数字转整数
- linux shell 字符串操作(长度,查找,替换)详解
- JENKINS配置QQ邮箱接收邮件