//如果有右子节点判断左右子节点的值大小,记录一个最大的
位置,好用于交换
if
(datas[biggerIndex] < datas[biggerIndex + 1]) {
biggerIndex++;
}
}
//此处是比较父节点值和左右子节点值,找个最大的做父亲
if
(datas[maxIndex] < datas[biggerIndex]) {
Integer temp = datas[maxIndex];
datas[maxIndex] = datas[biggerIndex];
datas[biggerIndex] = temp;
//记录一下最大值的索引
maxIndex = biggerIndex;
}
else
{
break
;
}
}
}
}
/**
* 堆排序
*
*
@param
datas
*/
public
static
void
heapSort(Integer[] datas) {
// 数组大小
int
arrayLength = datas.
length
;
// 遍历数组
for
(
int
i = 0; i < arrayLength - 1; i++) {
// 构建堆
buildHeap(datas, arrayLength - 1 - i);
// 交换元素
3
/
11