C++ 堆排序算法实现
来源:互联网 发布:windows微信机器人 编辑:程序博客网 时间:2024/06/14 03:24
C++ 堆排序函数实现如下:
void heap_sort(vector<int> &data) { for (int i = (int)data.size() / 2; i >= 0; i--) { heap_adjust(data, i, (int)data.size()); } for (int i = (int)data.size() - 1; i > 0; i--) { swap(data[0], data[i]); heap_adjust(data, 0, i); }}void heap_adjust(vector<int> &data, int e, int length) { int child; for(;2 * e + 1 < length; e = child) { child = 2 * e + 1; if(child < length - 1 && data[child + 1] > data[child]) { child++; } if(data[e] < data[child]) { swap(data[e], data[child]); } else { break; } }}
完整代码如下(包含main函数,头文件,测试数组):
#include <iostream>#include <vector>using namespace std;//函数声明void output_array(vector<int> &data); //输出void heap_sort(vector<int> &data);void heap_adjust(vector<int> &data, int e, int length);void heap_sort(vector<int> &data) { for (int i = (int)data.size() / 2; i >= 0; i--) { heap_adjust(data, i, (int)data.size()); } for (int i = (int)data.size() - 1; i > 0; i--) { swap(data[0], data[i]); heap_adjust(data, 0, i); }}void heap_adjust(vector<int> &data, int e, int length) { int child; for(;2 * e + 1 < length; e = child) { child = 2 * e + 1; if(child < length - 1 && data[child + 1] > data[child]) { child++; } if(data[e] < data[child]) { swap(data[e], data[child]); } else { break; } }}void output_array(vector<int> &data) { for(auto i : data) { cout << i << " "; } cout << endl;}int main() { int _data[] = {2, 4, 6, 0, 9, 8}; vector<int> data(_data, _data + 6); heap_sort(data); output_array(data); return 0;}
0 0
- 排序算法(C实现)--------- 堆排序
- 堆排序算法实现(C++)
- 堆排序算法(C & Java 实现)
- c语言 实现堆排序算法
- 堆排序C语言实现 算法导论
- 算法导论C语言实现: 堆排序
- 堆排序算法(c 语言实现)
- 算法导论 堆排序 C语言实现
- 堆排序算法及C语言实现
- 【算法】C语言实现堆排序
- 算法导论,堆排序,c实现。
- 多线程堆排序算法C语言实现
- C语言实现堆排序算法
- C语言实现堆排序算法
- 【c++】堆排序算法
- C算法--堆排序
- 堆排序算法实现
- 堆排序算法实现
- iOS开发出错whose view is not in the window hierarchy!的解决
- Java动态代理实现
- mazu
- DefaultHandlerExceptionResolver : Failed to convert request element: org.springframework.web.method.
- 阿里云添加二级域名
- C++ 堆排序算法实现
- 详解Spring应用作为EJB客户端调用EJB方法
- android.view.WindowManager$BadTokenException
- 浅谈Android中的LOG查看ANR(一)
- Spring注释(二) @RequestMapping
- delegate、notification、KVO各优缺点 - xuym
- MySQL插入数据
- 经典面试题
- Spring 注释(一) @Controller @Component @Repository @Service