integers[minIndex] = temp;
}
}
}
}
4. 堆排序
堆排序的思想就是将要排序的数组看成一个完全二叉树(出最后一层节点外,其他
节点都是 2 个子节点),之后建立大顶堆,将完全二叉树建立成一个父节点值都大
于它的子节点的树。之后将根节点和要排序的数组的最后一个元素进行换位。之后除
了数组最后一个元素外重复建堆过程。算法如下
package
sort;
import
java.util.Arrays;
/**
* 堆排序
*
*
@author
liuyan
*/
public
class
HeapSort {
/**
* 构建堆数组
*
*
@param
datas
*
@param
lastIndex
*/
public
static
void
buildHeap(Integer[] datas,
int
lastIndex) {
//从目标的父节点开始遍历
for
(
int
i = (lastIndex - 1) / 2; i >= 0; i--) {
//记录父节点位置
int
maxIndex = i;
//当父节点的子节点存在的时候
while
(maxIndex * 2 + 1 <= lastIndex) {
//默认附一个大值为父节点的左子节点的索引
int
biggerIndex = maxIndex * 2 + 1;
//此处判断是否父节点还有一个右子节点
if
(biggerIndex < lastIndex) {
2
/
11