算法:冒泡排序、二分查找、快速排序

//冒泡排序

$arr=[];

function getArr($arr){
    $count=count($arr);
    for($i=0;$i<$count;$i++){
        for($j=1;$j=$count-$i-1;$j++){
            if($arr[$j]>$arr[$j+1]){
                $item=$arr[$j+1];
                $arr[$j+1]=$arr[$j];
                $arr[$j]=$item;
            }
        }
    }
    return $arr;
}

//二分查找

function getStr($arr,$str){
    $num=count($arr);
    $min=0;
    $max=$num-1;    
    while($min<$max){
        $middle=intval(($min+$num-1)/2);
        if($arr[$middle]>$str){
            $max=$middle;
        }else if($arr[$middle]<$str){
            $min=$middle+1;
        }else{
            return $middle;
        }
    }
    return true;
}

//快速排序

function quickSort($arr) {
    //先判断是否需要继续进行
    $length = count($arr);
    if($length <= 1) {
        return $arr;
    }
    //选择第一个元素作为基准
    $base_num = $arr[0];
    //遍历除了标尺外的所有元素,按照大小关系放入两个数组内
    //初始化两个数组
    $left_array = array();  //小于基准的
    $right_array = array();  //大于基准的
    for($i=1; $i<$length; $i++) {
        if($base_num > $arr[$i]) {
            //放入左边数组
            $left_array[] = $arr[$i];
        } else {
            //放入右边
            $right_array[] = $arr[$i];
        }
    }
    //再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数
    $left_array = quickSort($left_array);
    $right_array = quickSort($right_array);
    //合并

    return array_merge($left_array, array($base_num), $right_array);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值