Sunday, August 13, 2006

source code for heap sort

#include "iostream"
using namespace std;

#define SIZE 100000

void maxHeapIfy(int *A,int i,int lengthA)
{
int l,r,largest,tmp;
l=2*(i+1)-1;
r=2*(i+1);
if( l < lengthA && A[l] > A[i])
largest=l;
else
largest=i;
if( r < lengthA && A[r] > A[largest])
largest=r;
if( largest != i ) {
tmp=A[i];
A[i]=A[largest];
A[largest]=tmp;
maxHeapIfy(A,largest,lengthA);
}
}

void buildMaxHeap(int *A,int lengthA)
{
int i;
for ( i = (int)(lengthA/2);i>=0;i-- )
maxHeapIfy(A,i,lengthA);
for ( i = 0; i < lengthA; i++ ) {
}
}

void heapSort(int *A,int lengthA)
{
int i, tmp;
buildMaxHeap(A,lengthA);
for( i = lengthA-1; i > 0; i-- ) {
tmp = A[i];
A[i] = A[0];
A[0] = tmp;
maxHeapIfy(A,0,i);
}
}

int main(void)
{
freopen("org.txt","w",stdout);
int A[SIZE];
int i;
for ( i = 0; i < SIZE; i++ ) {
A[i] = rand()%SIZE;
cout << A[i] << endl;
}
heapSort(A,SIZE);
freopen("res.txt","w",stdout);
for ( i = 0; i < SIZE; i++ ) {
cout << A[i] << endl;;
}
return 0;
}

0 Comments:

Post a Comment

<< Home