一个简单的堆排序(heapsort)
2017-09-29 12:58
225 查看
#include <iostream> #include <vector> using namespace std; #define LEFT(i) (i<<1) #define RIGHT(i) ((i<<1) + 1)//tips:+的优先级高于<< vector<int>& max_heapify(vector<int>& A,int i) { int large = i; if(LEFT(i) < A.size() && A[i] < A[LEFT(i)])large = LEFT(i); if(RIGHT(i) < A.size() && A[large] < A[RIGHT(i)])large = RIGHT(i); if(large == i)return A; int t = A[large]; A[large] = A[i]; A[i] = t; return max_heapify(A,large); } vector<int>& build_max_heap(vector<int>& A) { for(int i = A.size()/2;i >= 1;--i) { max_heapify(A,i); } return A; } vector<int>& heap_sort(vector<int>& A) { int l = A.size(); for(int i = 1;i < l;++i) { cout<<A[1]<<endl; int t = A[A.size() - 1]; A[A.size() - 1] = A[1]; A[1] = t; A.pop_back(); max_heapify(A,1); } } int main() { vector<int>A = {0,1,5,6,4,7,3,8,9,1,2,3,4,5}; build_max_heap(A); heap_sort(A); }
相关文章推荐
- heapsort的一个简单的例子
- 堆排序heapSort java实现
- 堆排序 Heap Sort
- 堆排序(HeapSort)
- HeapSort 堆排序
- C++、C#、java算法学习日记07----堆排序(HeapSort)
- 堆排序 HeapSort
- 算法分析之——heap-sort堆排序
- 堆排序(Heap Sort)
- 排序算法之堆排序 Heap Sort
- 经典排序算法 - 堆排序Heap sort
- 堆排序(Heap Sort)
- [数据结构与算法]堆排序 Heap Sort
- 堆排序(Heap Sort)
- 堆排序(Heap Sort)
- 堆排序(HeapSort)
- 经典算法(9)- 堆排序(Heapsort)
- HeapSort(堆排序)
- 堆排序 Heap Sort
- 排序算法 之 堆排序 HeapSort