[classic algo]-heap sort 堆排序
2012-08-17 20:22
405 查看
#include <iostream> using namespace std; #define MAXSIZE 10000 int data[MAXSIZE]; int heapSize = 0; void heapShift(int i) { int left = i*2+1; int right = i*2+2; int largest = i; if(left < heapSize && data[largest] < data[left]) { largest = left; } if(right < heapSize && data[largest] < data[right]) { largest = right; } if(largest != i) { int tmp = data[largest]; data[largest] = data[i]; data[i] = tmp; heapShift(largest); } } void buildHeap(int n) { int begin = n/2 - 1; for(int i = begin; i>=0; --i) heapShift(i); } void heapSort(int n) { int tmp; buildHeap(n); for(int i=n-1; i>0; --i) { tmp = data[i]; data[i] = data[0]; data[0] = tmp; heapSize--; heapShift(0); } } /* 10 16 14 10 8 7 9 3 2 4 1 */ int main() { int num; cin>>num; heapSize = num; for(int i=0; i<num; ++i) cin>>data[i]; heapSort(num); for(int j=0; j<num; ++j) cout<<data[j]<<" "; //system(("pause")); return 0; }
相关文章推荐
- 堆排序 heapSort
- 排序1+4:归并排序(MergeSort)和堆排序(HeapSort)
- 八大排序算法之四选择排序—堆排序(Heap Sort)
- [Java--常见排序算法]--堆排序 (Heap Sort)
- Insertion or Heap Sort PAT甲级真题(堆排序)
- 排序算法之堆排序(Heap Sort)
- 堆排序(Heap Sort)算法学习
- 选择排序(2)——堆排序(heap sort)
- 堆排序 (Heapsort)
- 选择排序之堆排序(HeapSort)
- 排序算法之堆排序 Heap Sort
- Atitit 算法之道 attilax著 1. 第二部分(Part II) 排序与顺序统计(Sorting and Order Statistics) 1 2. 第六章 堆排序(Heapsort)
- 堆排序 Heap Sort
- heapsort堆排序(3种语言实现 c/java/python)
- 堆排序(heap Sort)
- 堆排序 HeapSort
- 【排序算法】 堆排序 heap sort(选择类排序)
- 经典算法(9)- 堆排序(Heapsort)
- 堆排序(heap sort)
- 堆排序(Heap Sort)原理及Java实现