public class SevenSort {
public static void main(String[] args) {
int[] arr = new int[] {1,5,3,2,4,10,7,9,8,30,25,26,21,15};
heapSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void heapSort(int[] arr) {
for (int i = (arr.length - 1 - 1) / 2; i >= 0; i--) {
siftDown(arr,i,arr.length);
}
for (int i = arr.length - 1; i > 0; i--) {
swap(arr,0,i);
siftDown(arr,0,i);
}
}
private static void siftDown(int[] arr, int k, int length) {
while (2 * k + 1 < length) {
int j = 2 * k + 1;
if (j + 1 < length && arr[j + 1] > arr[j]) {
j = j + 1;
}
if (arr[k] >= arr[j]) {
break;
}else {
swap(arr,k,j);
k = j;
}
}
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
