PHP를 사용하여 힙 정렬 알고리즘을 작성하는 방법
힙 정렬은 효율적인 정렬 알고리즘입니다. 핵심 아이디어는 정렬할 시퀀스를 바이너리 힙으로 구성한 다음 힙의 구조를 지속적으로 조정하여 정렬을 수행하는 것입니다. 이 기사에서는 PHP를 사용하여 힙 정렬 알고리즘을 작성하는 방법을 소개하고 참조용 코드 예제를 제공합니다.
function heapify(&$arr, $n, $i) { $largest = $i; // 将当前节点标记为最大值节点 $l = 2 * $i + 1; // 左子节点 $r = 2 * $i + 2; // 右子节点 // 如果左子节点大于根节点 if ($l < $n && $arr[$l] > $arr[$largest]) { $largest = $l; } // 如果右子节点大于根节点 if ($r < $n && $arr[$r] > $arr[$largest]) { $largest = $r; } // 如果最大值不等于当前节点,则交换它们的位置 if ($largest != $i) { $temp = $arr[$i]; $arr[$i] = $arr[$largest]; $arr[$largest] = $temp; // 递归调整交换之后的子树 heapify($arr, $n, $largest); } }
function heapSort(&$arr) { $n = count($arr); // 构建最大堆 for ($i = ($n / 2) - 1; $i >= 0; $i--) { heapify($arr, $n, $i); } // 排序 for ($i = $n - 1; $i > 0; $i--) { // 交换堆顶和最后一个元素 $temp = $arr[0]; $arr[0] = $arr[$i]; $arr[$i] = $temp; // 调整剩余元素的顺序 heapify($arr, $i, 0); } }
$arr = [3, 7, 2, 11, 1, 9, 6, 4, 8]; echo "排序前:" . implode(", ", $arr) . " "; heapSort($arr); echo "排序后:" . implode(", ", $arr) . " ";
排序前:3, 7, 2, 11, 1, 9, 6, 4, 8 排序后:1, 2, 3, 4, 6, 7, 8, 9, 11
힙 정렬은 최대(또는 최소) 힙을 구축하여 정렬을 구현하는 효율적인 정렬 알고리즘입니다. 힙의 구조를 조정함으로써 힙 정렬을 쉽게 구현할 수 있습니다. PHP를 사용하여 힙 정렬 알고리즘을 작성하는 것은 비교적 간단합니다. 힙 조정 함수와 힙 정렬 함수를 작성하고 정렬할 배열을 매개변수로 전달하면 됩니다. 이 글의 내용이 힙 정렬 알고리즘을 이해하고 사용하는 데 도움이 되기를 바랍니다.
위 내용은 PHP를 사용하여 힙 정렬 알고리즘을 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!