堆排序
Posted Vincent_Bryan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆排序相关的知识,希望对你有一定的参考价值。
具体解析可参见:http://bubkoo.com/2014/01/14/sort-algorithm/heap-sort/
#include<bits/stdc++.h> using namespace std; void heap(int *a, int index, int Size){ int left = 2*index + 1; int right = 2*index + 2; int iMAX = index; if(right < Size && a[iMAX] < a[left]) iMAX = left; if(right < Size && a[iMAX] < a[right]) iMAX = right; if(iMAX != index){ swap(a[index], a[iMAX]); heap(a, iMAX, Size); } } void buildHeap(int *a, int len){ int index = (len/2)-1; for(int i = index; i >= 0; i--){ heap(a, i, len); } } void heapSort(int *a, int len){ buildHeap(a, len); for(int i = len; i >= 1; i--){ swap(a[0], a[i-1]); heap(a, 0, i-1); } } int main(){ int a[10] = {16, 10, 4, 14, 7, 9, 3, 2, 8, 1}; heapSort(a, 10); for(int i = 0; i < 10; i++){ cout << a[i] << ‘ ‘; } }
以上是关于堆排序的主要内容,如果未能解决你的问题,请参考以下文章