php必须掌握的四种基础排序算法

php必须掌握的四种基础排序算法

冒泡排序

一个一个往外冒

//冒泡
function bubble($arr){
	$len = count($arr);
	
	for($i = 1; $i < $len; $i++){
		for($k = 0; $k < $len - $i; $k++){
			if($arr[$k] > $arr[$k+1]){
				$tmp = $arr[$k+1];
				$arr[$k+1] = $arr[$k];
				$arr[$k] = $tmp;
			}
		}
	}
	return $arr;
}

快速排序

先拿一个为基准,然后递归左右放

//快速
function quick($arr){
	$len = count($arr);
	if($len == 1){return $arr;}
	
	$left = $right = [];
	for($i = 1; $i < $len; $i++){
		if($arr[$i] < $arr[0]){
			$left[] = $arr[$i];
		}else{
			$right[] = $arr[$i];
		}
	}
	
	$left = quick($left);
	$right = quick($right);
	
	return array_merge($left,array($arr[0]),$right);
}

选择排序

一直找到最小的放到前面

//选择
function select($arr){
	$len = count($arr);
	
	for($i = 0; $i < $len -1; $i++){
		$min = $i;
		for($k = $i + 1; $k < $len; $k++){
			$min = $arr[$k] < $arr[$min] ? $k : $min;
		}
		if($min != $i){
			$tmp = $arr[$i];
			$arr[$i] = $arr[$min];
			$arr[$min] = $tmp;
		}
	}
	return $arr;
}

插入排序

默认第一个已排好,后面往里面插

//插入 
function insert($arr){
	$len = count($arr);
	
	for($i = 1; $i < $len; $i++){
		$tmp = $arr[$i];
		for($k = $i -1; $k >= 0; $k--){
			if($tmp < $arr[$k]){
				$arr[$k+1] = $arr[$k];
				$arr[$k] = $tmp;
			}else{
				break;
			}
		}
	}
	return $arr;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值