算法 - 冒泡算法 以及对应的优化方法

上帝公平地给了每个人每天三个8小时。第一个8小时大家都在工作;第二个8小时大家都在睡觉;人与人的区别大多是在第三个8小时创造出来的!

 

冒泡算法

function myFun($data, $type = 'desc') {
    if( !is_array($data) ) {
        return 'formate is error';
    }
    $count = count($data);

    // 
    if( $count == 0 ){
        return 'data is empty';
    }

    // 
    if( $count == 1 ) {
        return $data[0];
    }

    // 标识
    $flag = true;

    for ($i=1; $i < $count; $i++) {
        for ($j=0; $j < $count - $i; $j++) { 
            if( $type == 'desc' && $data[$j] < $data[$j+1] ) {
                $item = $data[$j+1];
                $data[$j+1] = $data[$j];
                $data[$j] = $item;

                $flag = false;
            } else if( $type == 'asc' && $data[$j] > $data[$j+1] ) {
                $item = $data[$j+1];
                $data[$j+1] = $data[$j];
                $data[$j] = $item;

                $flag = false;
            }
        }

        // 没有变化
        if( $flag ) {
            break;
        }
    }
    return implode(',', $data);
}

$myData = [1, 3, 56, 78, 90, 23, 89];

echo myFun($myData, 'asc');

 

直接运行就可以,优化的部分在于  flag  这个变量  然后进行的判断,身为程序员的你,可以自行体会

 

时间复杂度:O(n^2)

 

空间复杂度:O(1)

 

posted @ 2022-05-13 09:05  方达达  阅读(17)  评论(0)    收藏  举报