堆排序

来源:互联网 发布:eplan软件 编辑:程序博客网 时间:2024/05/22 03:38
#include <iostream>using namespace std;void Maxheapify(int A[],int i,int size){int left=2*i,right=2*i+1,largest;if (left<=size&&A[left]>A[i]){largest=left;} else{largest=i;}if (right<=size&&A[right]>A[largest]){largest=right;} if (largest!=i){int temp=A[i];        A[i]=A[largest];A[largest]=temp;Maxheapify(A,largest,size);}}void BuildMaxHeap(int A[],int n){int size=n;for (int i=n/2;i>=1;i--){Maxheapify(A,i,size);}}void HeapSort(int A[],int n){BuildMaxHeap(A,n);int size=n;for (int j=n;j>=2;j--){int temp=A[j];A[j]=A[1];A[1]=temp;size=size-1;Maxheapify(A,1,size);}}int main(){int A[11]={0,23,24,98,67,12,1,99,56,87,19};        HeapSort(A,10);for (int i=1;i<=10;i++){cout<<A[i]<<endl;}return 0;}