堆排序java代码实现
public static void sort(int[] arr) {
if (arr.length <= 1)
return;
int n = arr.length;
while (n > 1) {
//从最后一个非叶子节点开始
for (int i = n / 2 - 1; i >= 0; i--) {
int left = 2 * i + 1;
if (left >= n)
continue;
if (arr[i] < arr[left]) {
int tmp = arr[i];
arr[i] = arr[left];
arr[left] = tmp;
}
int right = 2 * i + 2;
if (right >= n)
continue;
if (arr[i] < arr[right]) {
int tmp = arr[i];
arr[i] = arr[right];
arr[right] = tmp;
}
}
int tmp = arr[0];
arr[0] = arr[n-1];
arr[n-1] = tmp;
n--;
}
}