堆排序
来源:互联网 发布:戎美质量 知乎 编辑:程序博客网 时间:2024/06/02 04:50
对于堆排序,有以下几点需要注意:
- 堆化操作。将数组堆化有两种方法:一种是依次插入数组中的元素,使其堆化,另一种是自底向上。由于我们知道全部的元素,此时选择自底向上的方法,其时间复杂度为O(n),插入法的时间复杂度为O(nlog(n))。
- 在堆化操作当中,核心部分是3个结点比大小,不断下塑,从而找到合适的位置存放违规的元素。
- 将堆有序化,方法是不断执行出堆操作。
附件:
void heap_shift_down(int *a, int hole, int size){int l = 2*hole + 1;int tmp = a[hole];while(l < size){if(l + 1 < size && a[l + 1] > a[l])l++;if(a[l] > a[hole]){a[hole] = a[l];hole = l;l = 2*hole + 1;}else{break;}}a[hole] = tmp;}void heap_sort(int *a, int size){//heapifyint parent = (size - 2)/2;while(parent >= 0)heap_shift_down(a, parent--, size);//pop upwhile(size--){swap(a[0], a[size]);heap_shift_down(a, 0, size);}}int g_a[] = {13, 12 , 5, 6, 0, 2};int main(){heap_sort(g_a, sizeof(g_a)/sizeof(int));return 0;}
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- jQuery重要函数用法详解
- QT 库的连接
- 黑马程序员——Java 网络通信 正则表达式
- Objective-C Category初体验
- nkoj 1248: 郁闷的出纳员
- 堆排序
- other-IE セキュリティの設定
- EPT学习总结及KVM的处理
- 《php开发典型模块大全》读书笔记 第四章 smarty (张迅雷闪击PHP系列)
- Ballmer:微软不会给苹果留任何余地
- 文件描述符与文件指针的区别
- send/sendto/sendmsg函数解析
- WES7添加Touch功能
- Java代码调用Net接口进行Webservices对接