background image

//如果有右子节点判断左右子节点的值大小,记录一个最大的

位置,好用于交换

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