排序算法:推排序

来源:互联网 发布:社交媒体网络安全问题 编辑:程序博客网 时间:2024/05/31 19:37
#include<iostream>using namespace std;void AdjustHeap(int A[], int hLen, int i){int left = 2*i + 1;  int right = 2*i + 2;int largest = i;int temp;while(left < hLen || right < hLen){if (left < hLen && A[largest] < A[left]){largest = left;}if (right < hLen && A[largest] < A[right]){largest = right;}if (i != largest)  {temp = A[largest]; A[largest] = A[i];A[i] = temp;i = largest;        left = 2*i + 1;  right = 2*i + 2;}else{break;}}}void BuildHeap(int A[], int hLen){int i;int begin = hLen/2 - 1; for (i = begin; i >= 0; i--){AdjustHeap(A, hLen, i);  }}void HeapSort(int A[], int aLen){int hLen = aLen;int temp;BuildHeap(A, hLen);     while (hLen >= 1){temp = A[hLen-1];  A[hLen-1] = A[0];cout << A[0] << ' ';A[0] = temp;hLen--;        AdjustHeap(A, hLen, 0);  }}int main(){int A[10]={1, 3, 4, 5, 7, 2, 6, 8, 0};HeapSort(A, 9);return 0;}

0 0
原创粉丝点击