首页 > 编程语言 > 详细

几种常用的排序方式(php实现)

时间:2015-08-28 21:03:45      阅读:241      评论:0      收藏:0      [点我收藏+]

1.普通冒泡排序

<?php
    function buddle_sort($a){
        $i=0;
        $j=0;
        $n= sizeof($a);
        if($n==0)
        {return false;
            
        }else{
            
         
         
        for($i=0;$i<$n;$i++)
        { 
           for($j=$n-1;$j>$i;$j--)
           {    
                if($a[$j]>$a[$i]){
                    $m = $a[$i];
                    $a[$i]= $a[$j];
                    $a[$j]= $m;
                    }
           }
        }
        
    }
    return $a;
    }

$l = array(20,10,15,4,2,45,11);

$R=buddle_sort($l);
foreach($R as $value)
echo $value,"_";



?>

  2.改进冒泡排序

<?php
    function buddle_sort($a){
        $i=0;
        $j=0;
        $n= sizeof($a);
        if($n==0)
        {return false;
            
        }else{
            
         $flag = true;
         
        for($i=$n-1;$i>0 && $flag;$i--)
        { $flag = false;
           for($j=0;$j<$i;$j++)
           {    
                if($a[$j]>$a[$j+1]){
                    $m = $a[$j+1];
                    $a[$j+1]= $a[$j];
                    $a[$j]= $m;
                    $flag = true;
                   
                    }
                  
           }
        }
         
    }
    return $a;
    }

$l = array(10,15,20,25,30,31,5);

$R=buddle_sort($l);

foreach($R as $value)
echo $value,"_";



?>

  3.选择排序

<?php
    function buddle_sort($a){
        $i=0;
        $j=0;
        $n= sizeof($a);
        if($n==0)
        {return false;
            
        }else{
            
         
         
        for($i=$n-1;$i>0;$i--)
        {   $max = $i;
           for($j=0;$j<$i;$j++)
           {    
                if($a[$j]>$a[$max]){
                    $max = $j;
                    }
                  
           }
           if($a[$max] >$a[$i])
           {
               $m = $a[$i];
               $a[$i]=$a[$max];
               $a[$max] = $m;
           }
        }
         
    }
    return $a;
    }

$l = array(10,1,2,5,30,31,6);

$R=buddle_sort($l);

foreach($R as $value)
echo $value,"_";



?>

  4.插入排序

<?php
function simple_sort($a){
    $l = sizeof($a);
    if(!$l){
        return false;
    }
    for($i=1;$i<$l;$i++){

       if($a[$i]<$a[$i-1]){
          
            for($j = $i;$j>0;$j--){
              
               if($a[$j]<$a[$i])
               { 
                 break;
                }
            } 
            $v=$a[$i];
            for($m=$i;$m>$j+1;$m--)
            {
            $a[$m]=$a[$m-1];
            }
            $a[$j+1] =$v;
              
           }
}
    
    return $a;
}

$s =array(2,13,5,12,6,67,54,12);
$R=simple_sort($s);
 foreach ($R as $value) {
echo $value,"_";
}

  5.快排1,浪费空间

<?php
function quickSort($arr){
    if(count($arr)>1){
        $k=$arr[0];
        $x=array();
        $y=array();
        $_size=count($arr);
        for($i=1;$i<$_size;$i++){
            if($arr[$i]<=$k){
                $x[]=$arr[$i];
            }elseif($arr[$i]>$k){
                $y[]=$arr[$i];
            }
        }
        $x=quickSort($x);
        $y=quickSort($y);
        return array_merge($x,array($k),$y);
    }else{
        return $arr;
    }
}
$a =array(2,1,2,4,12,5,6,8);
$r = quickSort($a);
var_dump($r);
?>

  6.快排2,推荐,在一个数组内实现。

<?php
$a = array(2, 1, 5, 3, 6, 4, 8, 9, 1);

function partition(&$a, $low, $high) {
    $pivot = $a[$low];
    while($low < $high) {
        while($low < $high && $a[$high] >= $pivot) {
            $high--;
        }
        $a[$low] = $a[$high];
        while($low < $high && $a[$low] <= $pivot) {
            $low++;
        }
        $a[$high] = $a[$low];
    }
    $a[$low] = $pivot;
    return $low;
}


function qs(&$a, $low, $high) {
    if ($low < $high) {
        $p = partition($a, $low, $high);
        qs($a, $low, $p-1);
        qs($a, $p+1, $high);
    }
}


qs($a, 0, 8);

var_dump($a);

  

几种常用的排序方式(php实现)

原文:http://www.cnblogs.com/muzidiandian/p/4767672.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!