首页 > 代码库 > 堆排序练习
堆排序练习
#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; }
堆排序练习
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。