Maison >développement back-end >tutoriel php >Comment écrire un algorithme de tri par tas en utilisant PHP
Comment écrire un algorithme de tri de tas en utilisant PHP
Le tri par tas est un algorithme de tri efficace. Son idée principale est de construire la séquence à trier dans un tas binaire, puis d'ajuster en continu la structure du tas pour réaliser le tri. Cet article explique comment écrire un algorithme de tri de tas à l'aide de PHP et fournit des exemples de code pour référence.
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, 11De cette façon, nous avons écrit et appliqué avec succès l'algorithme de tri par tas en utilisant PHP . Résumé :
Le tri par tas est un algorithme de tri efficace qui implémente le tri en construisant un tas maximum (ou minimum). En ajustant la structure du tas, nous pouvons facilement mettre en œuvre le tri du tas. Écrire un algorithme de tri de tas à l'aide de PHP est relativement simple. Il vous suffit d'écrire une fonction d'ajustement de tas et une fonction de tri de tas, et de transmettre le tableau à trier en tant que paramètre pour effectuer le tri. J'espère que le contenu de cet article pourra vous aider à comprendre et à utiliser l'algorithme de tri par tas.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!