堆排序练习
#include <iostream> using namespace std; int arr[] = {1,2,3,4,5,6 }; void swap(int& i, int& j) { int k = i; i = j; j = k; } void HeapAdjust(int array[], int i,const int length) { int lChild = i * 2; int rChild = i * 2 + 1; int max = i; if (i <= length / 2) { if (array[lChild - 1] > array[rChild - 1]) max = lChild; else max = rChild; if (array[max-1] > array[i - 1]) { swap(array[max-1], array[i - 1]); HeapAdjust(array,max,length); } } } int main() { int arrLen = sizeof(arr) / sizeof(arr[0]); for (int i = arrLen / 2; i > 0; i--) { HeapAdjust(arr, i, arrLen); } for (int i = arrLen; i > 2; i--) { swap(arr[0], arr[i-1]); HeapAdjust(arr, 1, i-2); } return 0; }
作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力