Ascending Heap Tree Sort in 'C'
Ascending Heap Tree Sort in 'C'
#include<stdio.h>
int main(){
int Heap[30],Num,i,Last,Temp;
//create a heap
Heap[0]=Num;
Create(Heap);
//sorting
while(Heap[0] > 1){
//swap heap[1] and heap[last]
Last=Heap[0];
Temp=Heap[1];
Heap[1]=Heap[Last];
Heap[Last]=Temp;
Heap[0]--;
Down_Adjust(Heap,1);
}
printf("\nArray After Heap Sort:\n");
for(i=1;i<=Num;i++)
printf("%d ",Heap[i]);
return 0;
}
void Create(int Heap[]){
int i,Num;
Num=Heap[0]; //no. of elements
for(i=Num/2;i>=1;i--)
Adjust(Heap,i);
}
void Down_Adjust(int Heap[],int i){
int j,Temp,Num,Flag=1;
Num=Heap[0];
/*
OUTPUT: