diff --git a/heapsort1.java b/heapsort1.java new file mode 100644 index 0000000..9a9d265 --- /dev/null +++ b/heapsort1.java @@ -0,0 +1,62 @@ +#include +void swap(int *a,int *b) +{ + int temp; + temp=*a; + *a=*b; + *b=temp; +} + +void heapify(int arr[],int n,int i) +{ + int largest=i; + int left=2*i+1; + int right=2*i+2; + if(leftarr[largest]) + largest=left; + if(rightarr[largest]) + largest=right; + if(largest!=i) + { + swap(&arr[i],&arr[largest]); + heapify(arr,n,largest); + + } +} + + void heapsort(int arr[],int n) + { + for(int i=n/2-1;i>=0;i--) + { + heapify(arr,n,i); + } + + for(int i=n-1;i>=0;i--) + { + swap(&arr[0],&arr[i]); + heapify(arr,i,0); + } + } + + void display(int arr[],int n) + { + for (int i = 0; i < n; ++i) + printf("%d ", arr[i]); + printf("\n"); + } + + int main() + { + int n,i; + printf("\nEnter size of array: "); + scanf("%d",&n); + int arr[n]; + printf("\nEnter %d elements: ",n); + for(i=0;i