Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int heap_size;
- void heap_sort(int *arr, int size)
- {
- buildheap(arr);
- int j,temp;
- for(j=size;j>=1;j--)
- {
- temp = arr[j];
- arr[j] = arr[0];
- arr[0] = temp;
- heap_size--;
- max_heapify(arr,0);
- }
- }
- void buildheap(int*arr)
- {
- int j;
- for(j=heap_size/2;j>=0;j--)
- {
- max_heapify(arr,j);
- }
- }
- void max_heapify(int *arr, int i)
- {
- int left = 2*i +1;
- int right = 2*i +2;
- int largest =i,temp;
- if(left<=heap_size && arr[left]>arr[i])
- {
- largest = left;
- }
- if(right<=heap_size && arr[right] > arr[largest])
- {
- largest = right;
- }
- if(largest!=i)
- {
- temp = arr[largest];
- arr[largest] = arr[i];
- arr[i] = temp;
- max_heapify(arr, largest);
- }
- }
- int main()
- {
- int size,i;
- printf("Enter the size of array : ");
- scanf("%d",&size);
- int *arr;
- arr=(int*)malloc(size*sizeof(int));
- printf("\nEnter the elements \n");
- for(i=0;i<size;i++)
- {
- scanf("%d",&arr[i]);
- }
- printf("\nArray is\n");
- for(i=0;i<size;i++)
- printf("%d\t",arr[i]);
- printf("\n");
- heap_size = size;
- heap_sort(arr,size);
- printf("\n\nSorted array is\n\n");
- for(i=0;i<size;i++)
- printf("%d\t",arr[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement