标签:
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);
标签:
原文地址:http://www.cnblogs.com/muzidiandian/p/4767672.html