堆排序
#include<iostream> using namespace std; void adjustHeap(int a[], int n, int id)//{ int Min; while(2*id+1<n){ Min=2*id+1; if(2*id+2<n){ if(a[2*id+1] > a[id*2+2]){ Min=id*2+2; } } if(a[id]<a[Min]){ break; }else{ swap(a[id],a[Min]); id=Min; } } } void buildHeap(int a[], int n)/*建立小顶堆*/{ for(int i = n /2 -1; i >= 0; i--) { adjustHeap(a,n,i); } } void HeapSort(int a[],int n){ buildHeap(a,n); for(int i=n-1;i>=0;i--){ swap(a[0],a[i]); n--; adjustHeap(a,n,0); } } int main(){ int a[12]; while(1){ int nn; cin>>nn; for(int i=0;i<nn;i++){ cin>>a[i]; } HeapSort(a,nn); for(int i=0;i<nn;i++){ cout<<a[i]<<" "; } cout<<endl; } return 0; }
补充:软件开发 , C++ ,