#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);
}
}
堆排序的c++实现
本文介绍了一个堆排序算法的实现过程,通过使用C++语言展示如何建立最大堆并对数组进行排序。首先展示了未排序前的数组状态,然后通过堆排序算法对其进行排序,并最终输出排序后的数组。该算法适用于需要高效排序解决方案的场景。

被折叠的 条评论
为什么被折叠?



