快排、冒泡、选择、插入排序PHP实现

<?php 
/**
*快速排序
**/
function quickSort(&$arr,$left,$right)
{
    $start=$left;
    $end=$right;
    while($start<$end){
        while($arr[$start]<$arr[$left] && $start!=$end){
            $start++;
        }
        while($arr[$end]>$arr[$left] && $start!=$end){
            $end--;
        }
        $tmp=$arr[$start];
        $arr[$start]=$arr[$end];
        $arr[$end]=$tmp;
    }
    if($arr[$start]>$arr[$left]){
        $start--;
    }
    $tmp=$arr[$start];
    $arr[$start]=$arr[$left];
    $arr[$left]=$tmp;
    if($start-1>$left){
        quickSort($arr,$left,$start-1);
    }
    if($start+1<$right){
        quickSort($arr,$start+1,$right);
    }
}
/**
*快速排序1
**/
function quickSort1(&$arr,$left,$right)
{
    $i=$left;
    $j=$right;
    $flag=$arr[$left];
    while($i<$j)
    {
        while($arr[$j]>=$flag && $i<$j)
        {
            $j--;
        }
        if($i<$j)
        {
            $arr[$i++]=$arr[$j];
        }
        while($arr[$i]<$flag && $i<$j)
        {
            $i++;
        }
        if($i<$j)
        {
            $arr[$j--]=$arr[$i];
        }
    }
    $arr[$i]=$flag;
    if($i>$left){
        quickSort1($arr,$left,$i-1);
    }
    if($i<$right){
        quickSort1($arr,$i+1,$right);
    }
}
/**
*冒泡排序
*/
function BubbleSort(&$arr)
{
    $length=count($arr);
    for($i=0;$i<$length;$i++){
        for($j=0;$j<$length-$i-1;$j++){
            if($arr[$j+1]<$arr[$j]){
                $tmp=$arr[$j];
                $arr[$j]=$arr[$j+1];
                $arr[$j+1]=$tmp;
            }
        }
    }
}
/**
*选择排序
*/
function SelectSort(&$arr){
    $length=count($arr);
    for($i=0;$i<$length;$i++){
        $now=$i;
        $min=$arr[$i];      
        for($j=$i+1;$j<$length;$j++){
            if($arr[$j]<$min){
                $min=$arr[$j];
                $now=$j;
            }
        }
        $tmp=$arr[$i];
        $arr[$i]=$min;
        $arr[$now]=$tmp;
    }
}
/**
*插入排序
**/
function InsertSort(&$arr){
    $length=count($arr);
    for($i=1;$i<$length;$i++){
        $now=$arr[$i];
        if($now<$arr[$i-1]){            
            for($j=$i-1;$j>=0 && $arr[$j]>$now;$j--){
                $arr[$j+1]=$arr[$j];
            }
            $arr[$j+1]=$now;
        }
    }
}
//测试排序结果
for($i=0;$i<20;$i++){
    $arr[]=$i;
}
shuffle($arr);
print_r($arr);
//quickSort($arr,0,count($arr)-1);
InsertSort($arr);
print_r($arr);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容