무더기 정렬 정리 실현
1969 단어 J#
지정된 루트의 트리를 최대화하려면 다음과 같이 하십시오.
/**
* Make tree max.
*
* @param array
* - source array
* @param i
* - root node index.
* @param length
* - tree length.
*/
private static void maxHeapify(int[] array, int i, int length) {
int left = i * 2;
int right = i * 2 + 1;
int largest;
if (left < length && array[left] > array[i]) {
largest = left;
} else {
largest = i;
}
if (right < length && array[right] > array[largest]) {
largest = right;
}
if (largest != i) {
swap(array, largest, i);
maxHeapify(array, largest, length);
}
}
/**
* Swap two elements in array.
*
* @param array
* - source array.
* @param j
* @param i
*/
private static void swap(int[] array, int j, int i) {
int temp = array[j];
array[j] = array[i];
array[i] = temp;
}
최대 트리 만들기:
/**
* Build max heap tree.
*
* @param array
* - source array.
*/
private static void buildMaxHeap(int[] array) {
int length = array.length;
for (int index = length / 2 + 1; index >= 0; index--) {
maxHeapify(array, index, length);
}
}
정렬 함수: (오름차순)
/**
* Heap sort in ASC.
*
* @param array
* - source array
*/
public static void heapSort(int[] array) {
buildMaxHeap(array);
int length = array.length;
for (int index = length - 1; index > 0; index--) {
swap(array, index, 0);
length--;
maxHeapify(array, 0, length);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 동적 추가 삭제 테이블텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.