MENU

常用排序算法实现(1):冒泡排序

January 31, 2020 • 数据结构与算法

思路:遍历数组中未排好序的数,一次比较相邻的两个数,将较大的数往下沉,具体可以查看 维基百科

实现:

function bubbleSort(array $nums, bool $asc = true)
{
    $len = count($nums);

    for ($i = 1; $i < $len; $i++) {
        for ($j = 0; $j < $len - $i; $j++) {
            if (($asc && $nums[$j] > $nums[$j + 1]) || (!$asc && $nums[$j] < $nums[$j + 1])) {
                $tmp = $nums[$j];
                $nums[$j] = $nums[$j + 1];
                $nums[$j + 1] = $tmp;
            }
        }
    }
    return $nums;
}

$nums = [123, 213, 12, 23, 4, 5, 2, 3, -1];
print_r(bubbleSort($nums, true));

时间复杂度 O(n2)