实现堆排序
来源:互联网 发布:网络摄像头通用pc软件 编辑:程序博客网 时间:2024/06/08 12:16
堆排序是在编程中经常用到的东西,在c++的STL底层里面有make_heap, push_heap, pop_heap 和 sort_heap四个接口函数,我们用到的最多的是STL中的priority_queue,其中的底层也是利用前面几个函数实现的。下面我们就自己实现以下堆排序,主要包括调整堆结构,构造堆和堆排序几个接口函数。
#include <iostream>using namespace std;void Adjust_Heap(int array[], int p, int N){ int parent, child; for (parent = p; (parent * 2+1) < N; parent = child) { child = parent * 2 + 1; if (child != N - 1 && array[child] < array[child + 1]) child++; if (array[parent] >= array[child]) break; else swap(array[parent], array[child]); }}void Build_Heap(int array[], int N){ for (int i = N / 2 - 1; i >= 0; i--) Adjust_Heap(array, i, N);}void Heap_Sort(int array[], int N){ Build_Heap(array, N); for (int i = N - 1; i >= 0; i--) { swap(array[0], array[i]); Adjust_Heap(array, 0, i); }}int main(){ int array[1000]; for (int i = 0; i < 1000; i++) array[i] = rand() % 10000; Heap_Sort(array, 1000); return 0;}
代码在主函数随机生成1000个0-10000的数进行堆排序,可以直接运行查看结果。
0 0
- 【排序】堆排序实现
- 用堆实现堆排序
- Python实现 [堆] [堆排序]
- 最大堆实现堆排序
- 堆以及堆排序实现
- 堆实现 及 堆排序
- 最大堆实现堆排序
- 堆排序的实现
- 堆排序的实现
- 堆排序实现...
- 堆排序的实现
- 堆排序实现
- 堆排序算法实现
- 堆排序的实现
- 堆排序实现
- 堆排序----c++实现
- 堆排序C++实现
- 堆排序的实现
- 删除链表中倒数K元素
- 实现音乐播放器,多线程处理进度条
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 实现iOS图片等资源文件的热更新化(一): 从Images.xcassets导出合适的图片
- java web项目发布
- 实现堆排序
- 最大公约数与最小公倍数的C语言实现
- 安卓调节屏幕亮度Seekbar
- Android自定义捕获Application全局异常
- Hibernate的HQL查询
- python标准库 循环器
- 堆的应用——优先级队列
- MVC结构中session的应用
- maven之插件