堆排序C++实现
来源:互联网 发布:手机淘宝 占用空间 编辑:程序博客网 时间:2024/06/03 18:56
//堆排序C++实现#include<iostream>#include<functional>using namespace std;void HeapSort(int* arr, int cnt){function<void(int*, int, int)> percdown = [&](int* arr, int i, int cnt) //下滤操作{int child = 0, tmp = 0;for (tmp = arr[i]; 2 * i + 1 < cnt; i = child){child = i * 2 + 1;if (child != cnt - 1 && arr[child + 1] > arr[child])child++;if (tmp < arr[child])arr[i] = arr[child];elsebreak;}arr[i] = tmp;};for (int i = (cnt-1) / 2; i >= 0; i--) //从最后一个元素的父节点开始一个一个的下滤,构建堆 注意:这里的i = cnt 或 cnt -1 均可,可以自行画图解释percdown(arr, i, cnt);for (int i = cnt - 1; i > 0; i--) //把构建好的堆进行排序{swap(arr[0], arr[i]);percdown(arr, 0, i);}}int main(){const int cnt = 1159;int arr[cnt];int tmp = -1;for (int i = 0; i < cnt; i++){if (i % 2)arr[i] = i;elsearr[i] = i * tmp;}HeapSort(arr, cnt);for (auto i : arr)cout << i << endl;for (int i = 0; i < cnt-1; i++){if (arr[i] > arr[i + 1])cout << "haha" << endl;}cout << "test end" << endl;cin.get();return 0;}
0 0
- 堆排序的C实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序--C语言实现
- C语言实现堆排序
- 堆排序(c实现)
- 堆排序--C语言实现
- 堆排序C语言实现
- 堆排序的实现(c++)
- C实现heap堆排序
- c/c++实现堆排序
- 堆排序C语言实现
- C语言实现堆排序
- 堆排序c语言实现
- 堆排序-C语言实现
- 排序算法(C实现)--------- 堆排序
- 安装IBM Data Studio Client
- MDK 文字乱码 解决办法
- 2015061207 - 踩在脚下
- Light OJ 1025 The Specials Menu(区间DP)
- 如何将文件夹导入安卓模拟器
- 堆排序C++实现
- 2015061208 - 杀人漫画
- DuiVision开发教程(19)-菜单
- Uva - 10935 - Throwing cards away I
- CFile操作详解
- 2015061209 - 如何读书
- Ubuntu 12.10下安装ibus中文输入法
- 利用SqlCommand和SqlDataReader对象操作数据库
- Zookeeper学习1---zk配置