堆排序

来源:互联网 发布:json包含html标签 编辑:程序博客网 时间:2024/06/08 09:20
#include<iostream>using namespace std;void heapify(int a[],int len,int top){//更改堆顶元素后,维持堆的性质while(top <  len){int left=2*top+1,right=2*top+2;int largest;if(left < len && a[top]<a[left]){largest=left;}else{largest=top;}if(right < len && a[largest]<a[right]){largest=right;}if(largest==top){break;}else{int tmp=a[largest];a[largest]=a[top];a[top]=tmp;top=largest;}}}void buildHeap(int a[],int len){for(int i=(len-2)/2;i>=0;i--){heapify(a,len,i);}}void heapSort(int a[],int len){buildHeap(a,len);for(int i=len-1;i!=0;i--){//swapint tmp=a[i];a[i]=a[0];a[0]=tmp;    //heapifyheapify(a,--len,0);}}int main(){int a[]={23,123,-2,0,98,1,4,6,8,55,-2,};int len=(sizeof(a)/sizeof(*a));heapSort(a,len);for(int i=0;i!=len;i++){cout<<a[i]<<endl;}return 0;}

0 0
原创粉丝点击