C++实现堆排序
2016-06-01 22:04
387 查看
/*堆排序*/ #include <iostream> using namespace std; void AdjustDown(int* array, size_t size, size_t parent) { size_t child = parent*2 + 1; while (child < size) { if (child+1 < size && array[child] < array[child+1]) { ++child; } if (array[child] > array[parent]) { swap(array[child], array[parent]); parent = child; child = parent*2 + 1; } else { break; } } } void HeapSort(int* array, size_t size) { //建堆 for (int i = (size-2)/2; i >= 0; --i) { AdjustDown(array, size, i); } //选数据排序 for (size_t i = 0; i < size; ++i) { swap(array[0], array[size-i-1]); AdjustDown(array, size-i-1, 0); } } void HeapSortTest() { int array[] = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10}; HeapSort(array, sizeof(array)/sizeof(array[0])); for (size_t i = 0; i < sizeof(array)/sizeof(array[0]); ++i) { cout<<array[i]<<" "; } cout<<endl; } int main() { HeapSortTest(); return 0; }
本文出自 “zgw285763054” 博客,请务必保留此出处http://zgw285763054.blog.51cto.com/11591804/1785316
相关文章推荐
- C++走向远洋——59(项目三、图形面积、抽象类)
- 第7次c++实验
- andriod eclipse 如何设置ndk-build也即NDK自动编译C/C++、JNI程序
- MD5算法C语言实现16、32位版
- 四个C++函数模板实例
- C++构造函数析构函数
- C语言程序设计(二)
- C++实现堆
- C语言练习篇-4河内之塔
- C语言学习篇-6函数、递归、嵌套
- win10下c++通用开发杂记
- c++命名类型转换
- C++中头文件的使用
- c++中的成员访问级别和派生继承方式
- 不使用中间变量交换两数
- sqlite3数据库c语言常用接口应用实例
- HomeWork——Binary Search Tree
- C++ Primer复制控制 13.3 析构函数
- Qt/C++ 继承QWidget setstylesheet解决
- C++独孤九剑第二式——众妙之门(函数处理机制)