这里介绍一些简单的算法,包括:冒泡排序、快速排序、二分查找、二叉树的遍历、二叉树的层次遍历、二叉树的前序、中序、后序遍历,一些简单的实现。
冒泡排序
function bubble_sort($arr)
{
$n = count($arr);
for ($i = 0; $i < $n; $i++) {
for ($j = 0; $j < $n - $i - 1; $j++) {
if ($arr[$j] < $arr[$j + 1]) {
[$arr[$j], $arr[$j + 1]] = [$arr[$j + 1], $arr[$j]];
}
}
}
return $arr;
}
冒泡排序过程的详细步骤,假设我们有一个数组 [64, 34, 25, 12, 22, 11, 90] 需要进行升序排序:
第一轮冒泡:
- 比较 64 和 34,64 > 34,交换它们的位置,数组变为 [34, 64, 25, 12, 22, 11, 90]
- 比较 64 和 25,64 > 25,交换它们的位置,数组变为 [34, 25, 64, 12, 22, 11, 90]
- 比较 64 和 12,64 > 12,交换它们的位置,数组变为 [34, 25, 12, 64, 22, 11, 90]
- 比较 64 和 22,64 > 22,交换它们的位置,数组变为 [34, 25, 12, 22, 64, 11, 90]
- 比较 64 和 11,64 > 11,交换它们的位置,数组变为 [34, 25, 12, 22, 11, 64, 90]
- 比较 64 和 90,64 < 90,不需要交换,这一轮结束
第一轮冒泡后,最大的数 90 被“冒泡”到了数组的最后一位。