堆排序的c++实现

来源:互联网 发布:荣威erx5网络连接错误 编辑:程序博客网 时间:2024/06/10 12:38
 
#include<iostream>using namespace std;void heapRebuild(int arr[],int root,int size);void heapSort(int arr[],int size);int main(){const int SIZE=10;int arr[SIZE]={10,2,13,41,23,52,7,31,65,90};cout<<"original array arr :"<<endl;for(int i=0;i<SIZE;i++)cout<<i+1<<" item is :"<<arr[i]<<endl;cout<<"after heap sorting  :"<<endl;heapSort(arr,SIZE);for(int i=0;i<SIZE;i++)cout<<i+1<<" item is :"<<arr[i]<<endl;return 0;}void heapRebuild(int arr[],int root,int size){int child=2*root+1;if(child<=size-1){int rightChild=child+1;if(rightChild<=size-1)if(arr[child]<arr[rightChild])child=rightChild;if(arr[root]<arr[child]){int temp=arr[child];arr[child]=arr[root];arr[root]=temp;heapRebuild(arr,child,size);}}}void heapSort(int arr[],int size){for(int i=size-1;i>=0;i--){heapRebuild(arr,i,size);}int last=size-1;for(int i=1;i<=size;i++,last--){int temp=arr[0];arr[0]=arr[last];arr[last]=temp;heapRebuild(arr,0,last);}}

原创粉丝点击