挨踢 | 石武浩

石武浩的博客

七月 2015

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>';

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
30
31
32
33
$arr = array(1,43,54,62,21,66,32,78,36,76,39);

// 快速排序法
function quick_sort($arr)
{
    $length = count($arr);
    if ($length <= 1) {
        return $arr;
    }

    $base_num = $arr[0];
    $l_arr    = array();
    $r_arr    = array();

    for ($i=1; $i < $length; $i++) {
        if ($base_num > $arr[$i]) {
            $l_arr[] = $arr[$i];
        } else {
            $r_arr[] = $arr[$i];
        }
    }

    $l_arr = quick_sort($l_arr);
    $r_arr = quick_sort($r_arr);

    return array_merge($l_arr, array($base_num), $r_arr);
}

$res = quick_sort($arr);

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

nginx和apache的主要区别

1、nginx相对于apache的优点:
轻量级,同样作为web 服务,比apache占用更少的内存及资源 。
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单

apache 相对于nginx 的优点:
rewrite ,比nginx 的rewrite 强大

2:作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点 使 Nginx 尤其受到虚拟主机提供商的欢迎。

3、Nginx 配置简洁, Apache 复杂
Nginx 静态处理性能比 Apache 高 3倍以上
Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用

4、最核心的区别
apache是同步多进程模型,一个连接对应一个进程;
nginx是异步的,多个连接(万级别)可以对应一个进程 。

5、Apache在处理动态有优势,Nginx并发性比较好,CPU内存占用低,如果rewrite频繁,那还是Apache吧

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