$arr = [3,1,13,5,7,11,2,4,14,9,15,6,12,10,8];
//冒泡排序
function maopao($arr){
$len = count($arr);
for ($i = 0; $i < $len; $i++) {
// 遍历i后面的元素,只要该元素小于当前元素,就把较小的往前冒泡
for ($j = $i+1; $j < $len; $j++) {
if ($arr[$i] > $arr[$j]) {
$tmp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $tmp;
}
}
}
return $arr;
}
print_r(maopao($arr));
//选择排序
function selectSort($arr) {
$len = count($arr);
for ($i = 0; $i < $len ; $i++ ){
$minIndex = $i;
// 找出i后面最小的元素与当前元素交换
for ($j = $i + 1; $j <$len ; $j++ ){
if ($arr[$j] <$arr[$minIndex]) {
$minIndex = $j;
}
}
if ($minIndex != $i ){
$tmp = $arr[$i];
$arr[$i] = $arr[$minIndex];
$arr[$minIndex] = $tmp;
}
}
return $arr;
}
print_r(selectSort($arr));
//插入排序
function insertSort($arr) {
$len = count($arr);
for ($i = 1; $i <$len ; $i ++ ){
//如果第二个值小于第一个
if($arr[$i] < $arr[$i-1] ){
$tmp = $arr[$i];
$j = $i -1;
// 如果当前元素大于前一个元素,就往前挪
while($j >= 0 && $tmp < $arr[$j]) {
$arr[$j + 1] = $arr[$j];
$j--;
}
$arr[$j+1] = $tmp;
}
}
return $arr;
}
print_r(insertSort($arr));
//快速
function quickSort($arr){
//先判断是否继续执行
$len = count($arr);
if ($len <= 1 ){
return $arr;
}
//选择第一个元素作为基准
$bashOne = $arr[0];
//遍历除了标尺外的所有元素,按照大小关系放入两个数组内
//初始化两个数组
$one = []; //大
$two = []; //小
for ($i = 1; $i <$len; $i++ ){
if($arr[$i] > $bashOne){
$one[] = $arr[$i];
}else{
$two[] = $arr[$i];
}
}
//再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数
$one = quickSort($one);
$two = quickSort($two);
// 合并
return array_merge($two,(array)$bashOne,$one);
}
print_r(quickSort($arr));
php四种常见的排序算法
最新推荐文章于 2023-09-05 19:56:33 发布