用php实现的各种排序算法总结

用php实现的各种排序算法,冒泡排序,交换排序,选择法排序,插入法排序,快速排序,根据实际情况可选择不同的排序算法。效率也有所不同。
重要的还是先理解了算法,实现起来才水到渠成。

    冒泡排序:<?php

    function BubbleSort($arr){

    $num = count($arr);

    for($i=1;$i<$num;$i++){

    for($j=$num-1;$j>=$i;$j--){

    if($arr[$j]<$arr[$j-1]){

    $iTemp = $arr[$j-1];

    $arr[$j-1] = $arr[$j];

    $arr[$j] = $iTemp;

    }

    }

    }

    return $arr;

    }

    ?>

    交换法排序:<?php

    function ExchangeSort($arr){

    $num = count($arr);

    for($i=0;$i<$num-1;$i++){

    for($j=$i+1;$j<$num;$j++){

    if($arr[$j]<$arr[$i]){

    $iTemp = $arr[$i];

    $arr[$i] = $arr[$j];

    $arr[$j] = $iTemp;

    }

    }

    }

    return $arr;

    }

    ?>

    选择法排序:<?php

    function SelectSort($arr){

    $num = count($arr);

    for($i=0;$i<$num-1;$i++){

    $iTemp = $arr[$i];

    $iPos = $i;

    for($j=$i+1;$j<$num;$j++){

    if($arr[$j]<$iTemp){

    $iTemp = $arr[$j];

    $iPos = $j;

    }

    }

    $arr[$iPos] = $arr[$i];

    $arr[$i] = $iTemp;

    }

    return $arr;

    }

    ?>

    插入法排序:<?php

    function InsertSort($arr){

    $num = count($arr);

    for($i=1;$i<$num;$i++){

    $iTemp = $arr[$i];

    $iPos = $i-1;

    while(($iPos>=0) && ($iTemp<$arr[$iPos])){

    $arr[$iPos+1] = $arr[$iPos];

    $iPos--;

    }

    $arr[$iPos+1] = $iTemp;

    }

    return $arr;

    }

    ?>

    快速排序 :<?php

    function QuickSort($arr){

    $num = count($arr);

    $l=$r=0;

    for($i=1;$i<$num;$i++){

    if($arr[$i] < $arr[0]){

    $left[] = $arr[$i];

    $l++;

    }else{

    $right[] = $arr[$i];

    $r++;

    }

    }

    if($l > 1){

    $left = QuickSort($left);

    }

    $new_arr = $left;

    $new_arr[] = $arr[0];

    if($r > 1){

    $right = QuickSort($right);

    }

    for($i=0;$i<$r;$i++){

    $new_arr[] = $right[$i];

    }

    return $new_arr;

    }

    $arr = array(7,1,6,5,2);

    $arr_new = QuickSort($arr);

    ?>

参考自网文并加工,忘记出处。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值