温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

我总结的四种排序

发布时间:2020-08-05 19:24:04 阅读:499 作者:dfwasds 栏目:开发技术
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

    本帖为了快速牢靠的记住四种排序。

冒泡排序

冒泡排序的时间复杂度是O(n^2);

外层控制趟数,并且跟内层排序个数相关。

$arr = [1,5,4,9,11];
$n = count($arr);
$max = $n - 1;

for($i = 0; $i < $max$i++){
    for($j = 0; $j < $max - $i$j++){
        if($arr[$j] > $arr[$j+1]){
            $t = $arr[$j];
            $arr[$j] = $arr[$j+1];
            $arr[$j+1] = $t;
        }
    }
}

var_dump($arr);

选择排序

选择排序的时间复杂度是O(n^2);

$arr = [1,5,4,9,11];
$n = count($arr) - 1;

for($i = 0; $i<$n$i++){
    $t = $i;
    for($j = $i+1; $j<$n + 1; $j++){
        if($arr[$t] > $arr[$j]){
            $t = $j;
        }
    }
    if($i != $t){
        $tmp = $arr[$i];
        $arr[$i] = $arr[$t];
        $arr[$t] = $tmp;
    }
}

var_dump($arr);

快速排序

快速排序的时间复杂度是O(nlog2^n);

$arr = [16256,19810 , 30];

function po(&$arr$left$right){
	$key $arr[$left];
	while($left $right){
		while($left $right && $arr[$right] >= $key){
			$right--;
		}
		if($left $right){
			$arr[$left++] = $arr[$right];
		}
		while($left $right && $arr[$left] <= $key){
			$left++;
		}
		if($left $right){
			$arr[$right--] = $arr[$left];
		}
	}

	$arr[$left] = $key;
	return $left;
}

function qs(&$arr$left$right){
	if($left >= $right){
		return ;
	}
	$i po($arr$left$right);
	qs($arr$left$i-1);
	qs($arr$i+1$right);
}
qs($arr07);
var_dump($arr);

归并排序

归并排序的时间复杂度O(nlog2^n);

$arr = [9711358394];

function gui($arr){
	$n count($arr);
	if($n <= 1){
	    return $arr;
	}
	$mid intval($n/2);
	$left array_slice($arr0$mid);
	$right array_slice($arr$mid);
	$left gui($left);
	$right gui($right);
	$all bin($left$right);
	return $all;
}

function bin($left$right){
    $arrC array();
    while(count($left) && count($right)){
        $arrC[] = $left['0'] < $right['0'] ? array_shift($left) : array_shift($right);
    }
    return array_merge($arrC$left$right);
}

var_dump(gui($arr));

其中,快速排序和归并排序都用到了递归,所以时间复杂度减少,但难度增大很多。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×