0
입력 코드 여기힙 정렬 (Heapsort) 구현
# include <iostream>
# include <stdlib.h>
# define MAX 10
void heapsort(int A[]);
void Build_MAX_Heap(int A[]);
void MAX_Heapify(int A[],int i);
int Left(int i);
int Right(int i);
void swap(int *num,int *num2);
using namespace std;
int main()
{
int H[100],i;
for(i=0;i<MAX;i++)
H[i]=rand();
cout << "the given array is::" << " ";
for(i=0;i<MAX;i++)
cout << H[i] << "\n";
cout << "\n" << "\n";
heapsort(H);
cout << "the sorted array is ::" << " ";
for(i=0;i<MAX;i++)
cout << H[i] << "\n";
}
void heapsort(int A[])
{
int i,heapsize;
Build_MAX_Heap(A);
for(i=MAX-1;i>0;i--)
{
swap(&A[0],&A[i]);
heapsize=heapsize-1;
MAX_Heapify(A,0);
}
}
void Build_MAX_Heap(int A[])
{
int heapsize,i;
heapsize=MAX;
for(i=(MAX)/2;i>0;i--)
{
MAX_Heapify(A,i);
}
}
void MAX_Heapify(int A[],int i)
{
int l,r,largest,heapsize;
l=Left(i);
r=Right(i);
if(l<=heapsize && A[l]>A[i])
largest=l;
else
largest=i;
if(r<=heapsize && A[r]>A[i])
largest=r;
if(largest!=i)
{
swap(&A[i],&A[largest]);
MAX_Heapify(A,largest);
}
}
int Left(int i)
{
return (2*i);
}
int Right(int i)
{
return (2*i+1);
}
'무효 스왑 (INT * NUM1, INT의 *의 NUM2) {INT 온도; 임시 직원 = * num1; * num1 = * num2; * num2 = 임시; } 내 코드에 무슨 문제가 있나. 정렬되지는 않았지만 정렬 된 주문에는 표시되지 않습니다. 도움말에 대한 감사. 같은 것에 대한 감사합니다.