当前位置:Gxlcms > PHP教程 > PHP之冒泡排序

PHP之冒泡排序

时间:2021-07-01 10:21:17 帮助过:39人阅读

昨天去酷狗面试的时候,在笔试那一关,有道要求用PHP实现冒泡排序的编程题,因为实在太久没用过冒泡排序,忘记了算法的原理,结果留了空白,实在无语。因此今天把PHP的冒泡排序代码记录一下:

/**
 * 冒泡排序
 * @param array $numbers 要排序的数组,只限数字一维数组
 * @param boolean $asc   排序顺序,true是正序,false是逆序
 */functionbubble_sort(array $numbers, $asc = true) {$n = count($numbers);
    // 外循环最多排(n - 1)次$out_loop_cnt = $n - 1;
    for ($i = 0; $i < $out_loop_cnt; $i++) {
        // 内循环最多排(n - i - 1)次$in_loop_cnt = $n - $i - 1;
        for ($j = 0; $j < $in_loop_cnt; $j++) {
            // 根据排序顺序判断相邻两个数是否符合交换条件$swap = $asc ? ($numbers[$j] > $numbers[$j + 1])
                : ($numbers[$j] < $numbers[$j + 1]);
            if ($swap) {
                $temp = $numbers[$j + 1];
                $numbers[$j + 1] = $numbers[$j];
                $numbers[$j] = $temp;
            }
        }
    }

    return$numbers;
}

$arr = [1, 3, 5, 8, 4];

var_dump(bubble_sort($arr));
/**
 * 
输出: * array (size=5) * 0 => int 1 * 1 => int 3 * 2 => int 4 * 3 => int 5 * 4 => int 8 */var_dump(bubble_sort($arr, false)); /** * 输出: * array (size=5) * 0 => int 8 * 1 => int 5 * 2 => int 4 * 3 => int 3 * 4 => int 1 */

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了PHP之冒泡排序,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

人气教程排行