intmain(){int[] tree ={4,10,3,5,1,2};int n =6;//heapify(tree,n,0);//buildHeap(tree,n);headSort(tree,n);for(int i =0; i < n; i++){System.out.println(tree[i]);}return0;}staticvoidheapSort(int[] tree,int n){bulidHeap(tree, n);for(int i = n -1; i >=0; i--){swap(tree, i,0);heapify(tree, i,0);}}staticvoidbulidHeap(int[] tree,int n){int lastNode = n -1;int parent =(lastNode -1)/2;for(int i = parent; i >=0; i--){heapify(tree, n, i);}}staticvoidheapify(int[] tree,int n,int i){if(i >= n){return;}int c1 = i *2+1;int c2 = i *2+2;int max = i;if(c1 < n && tree[c1]>tree[max]){
max = c1;}if(c2 < n && tree[c2]> tree[max]){
max = c2;}if(max != i){swap(tree, max,i);heapify(tree,n,max);}}voidswap(int[] arr,intint j){int temp = arr[i];
arr[i]= arr[j];
arr[j]= temp;}