堆排序 C++实现
来源:互联网 发布:sql注入攻击方式 编辑:程序博客网 时间:2024/05/22 15:36
#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;void HeapAdjust(int *A,int s,int m){ int t=A[s]; for(int i=2*s+1;i<m;i=2*i+1) { if(i+1<m&&A[i]<A[i+1]) i++; if(t>=A[i]) break; A[s]=A[i]; s=i; } A[s]=t;}void HeapSort(int *A,int N){ for(int i=N/2-1;i>=0;i--) HeapAdjust(A,i,N); for(int i=0;i<N;i++) { swap(A[N-i-1],A[0]); HeapAdjust(A,0,N-i-1); }}int main(){ int array[10]={4,5,2,5,7,8,1,2,9,0}; HeapSort(array,10); for(int i=0;i<10;i++) cout<<array[i]<<" "; cout<<endl; return 0;}