挨踢 | 石武浩

石武浩的博客

算法

PHP实现二分查找法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$arr = array(1,43,54,62,21,66,32,78,36,76,39);

/ 二分查找法
function binary_search($arr, $value, $start = 0, $end = null)
{
    if ($end == null) {
        $end = count($arr) - 1;
    }

    $index = floor(($start + $end) / 2);
    $base_num = $arr[$index];

    if ($value < $base_num) {
        return binary_search($arr, $value, $start, $index-1);
    } elseif ($value > $base_num) {
        return binary_search($arr, $value, $index+1, $end);
    } else {
        return $index;
    }
}

$res = binary_search($arr, 54);
var_dump($res);

PHP实现冒泡排序法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$arr = array(1,43,54,62,21,66,32,78,36,76,39);

// 冒泡排序
function bubble_sort($arr)
{
    $length = count($arr);
    $tmp = null;

    // 该层循环控制冒泡的轮数
    for ($i=1; $i < $length; $i++) {
        // 该曾循环控制每轮冒出一个数,要比较的次数
        for ($j=0; $j < $length-$i; $j++) {
            if ($arr[$j] > $arr[$j+1]) {
                // 交换两个值的位置
                $tmp = $arr[$j+1];
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $tmp;
            }
        }
    }

    return $arr;
}

$res = bubble_sort($arr);

echo '<pre>';
var_dump($res);
echo '<pre>';

程序猿,爱游戏,爱电影,爱折腾
邮箱:admin@shiwuhao.com