• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

四种简单的排序算法的php实现

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  无聊,用php写几个排序算法,算法介绍请移步这里,这里使用php实现了几个简单的,如下

//选择排序
function selection_sort($arr){
    $len = count($arr);
    if($len <= 1) return $arr;
    
    for($i=0; $i<$len; $i++){
        $min = $arr[$i];
        $pos = $i;
        for($j=$i+1; $j<$len; $j++){
            if($min > $arr[$j]){
                $min = $arr[$j];
                $pos = $j;
            }
        }
        if($pos != $i){
            $arr[$pos] = $arr[$i];
            $arr[$i] = $min;
        }
    }
    return $arr;
}

//插入排序
function insertion_sort($arr){
    $len = count($arr);
    if($len <= 1) return $arr;
    
    for($i=1; $i<$len; $i++){
        $insertion = $arr[$i];
        $j = $i - 1;
        while($insertion < $arr[$j]){
            $arr[$j+1] = $arr[$j];
            $j--;
            if($j < 0)break;
        }
        if($j == $i-1) continue;
        $arr[$j+1] = $insertion;
    }
    return $arr;
}

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

//快速排序
function quick_sort($arr){
    $len = count($arr);
    if($len <= 1) return $arr;
    
    $base = current($arr);
    $left_arr = array();
    $right_arr = array();
    
    for($i=1; $i<$len; $i++){
        if($arr[$i] <= $base) $left_arr[] = $arr[$i];    
        if($arr[$i] > $base) $right_arr[] = $arr[$i];    
    }
    
    $left_arr = quick_sort($left_arr);
    $right_arr = quick_sort($right_arr);
    return array_merge($left_arr, array($base), $right_arr);
    
}

//test
$arr = array(4, 3, 2, 1, 6);
$arr_sorted = quick_sort($arr);
print_r($arr_sorted);

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP实现源代码学习笔记发布时间:2022-07-10
下一篇:
php上传文件常见问题(基础)发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap