Mình viết heapsort nhưng sao nó ko chạy =.= ko biết lỗi ở đâu mong mn xem giúp
Code:
#include <iostream>
#include <cstdlib>
using namespace std;
void max_heapcify(int *,int,int);
void buildheap(int *,int);
void heapsort(int *,int);
void max_heapcify(int *a,int i,int n)
{
int temp=a[i];int j=2*i;
while(j<=n)
{
if(j<n&&a[j+1]>a[j])
j=j+1;
if(a[i]<a[j])
{
a[i]=a[j];
a[j]=temp;
}
}
}
void buildheap(int *a,int n)
{
for(int i=n/2;i>=1;i--)
max_heapcify(a,i,n);
}
void heapsort(int *a,int n)
{
buildheap(a,n);
int temp=a[n];
a[n]=a[1];
a[1]=a[n];
heapsort(a,n-1);
}
int main()
{
int n,*a;
cout<<"Input n :";
cin>>n;
a=new int[n+1];
srand(time(NULL));
for(int i=1;i<n+1;i++)
{
a[i]=rand()%100;
}
cout<<"Array before sort :";
for(int i=1;i<n+1;i++)
{
cout<<a[i]<<" ";
}
heapsort(a,n);
cout<<endl;
for(int i=1;i<n+1;i++)
{
cout<<a[i]<<" ";
}
return 0;
}