Latest

6/recent/ticker-posts

Heap sort in c

 #include<stdio.h>


void swap(int *x, int *y)

{

    int temp=*x;

    *x=*y;

    *y=temp;

}

void heapify(int a[], int n, int i)

{

    int largest= i;

    int l=2*i +1;

    int r=2*i +2;

    if(l<n && a[l]>a[largest])

    largest=l;

    if(r<n && a[r]>a[largest])

    largest=r;

    if(largest!=i)

    {

        swap(&a[i], &a[largest]);

        heapify(a,n,largest);

    }

}


void heapsort(int a[], int n)

{

    for(int i=n/2-1;i>=0;i--)

    heapify(a,n,i);

    for(int i=n-1;i>0;i--)

    {

        swap(&a[0],&a[i]);

        heapify(a,i,0);

    }

}


int main()

{

    int n;

    scanf("%d",&n);

    int a[n];

    for(int i=0;i<n;i++)

    scanf("%d",&a[i]);

    heapsort(a,n);

    for(int i=0;i<n;i++)

    printf("%d ",a[i]);

}




Post a Comment

0 Comments