PHP实现冒泡排序和快速排序

来源:互联网 发布:淘宝网购买泓铭软件 编辑:程序博客网 时间:2024/06/07 05:28

声明

php中,数组是当一个普通变量,值传递是要一个实参的一个拷贝副本,跟实参无关,引用传递后可以改变实参的值。而类的对象是无论值传递和引用传递都是引用传递,是对对象的引用,都会改变实参的值。
PHP中的数组可以按值传递,也可以按引用传递,所以编程时一定要注意。
下面的程序是由Java转换过来的,结构上没有什么变化。直接上代码:

按值传递:

冒泡排序:

<?php$array = array(5,2,8,1,6,9,12,3,15,20);print_r($array);echo "<br>";$temp;//    $len = count($array);//    for ($i = 0; $i < $len;$i++){//        for ($j = $i+1; $j < $len;$j++){//            if ($array[$i] > $array[$j]){//                $temp = $array[$i];//                $array[$i] = $array[$j];//                $array[$j] = $temp;//            }//        }//    }////print_r($array);function bubbleSort($array){    $len = count($array);    for ($i = 0; $i < $len;$i++){        for ($j = $i+1; $j < $len;$j++){            if ($array[$i] > $array[$j]){                $temp = $array[$i];                $array[$i] = $array[$j];                $array[$j] = $temp;            }        }    }    return $array;}$array = bubbleSort($array);print_r($array);

快速排序:

<?php$arr = array(5,2,8,1,6,9,12,3,15,20);print_r($arr);echo "<br>";function quickSort($array,$left,$right){    $i = $left;    $j = $right;    $middle = $array[($i+$j)/2];    do{       while($array[$i]<$middle && $i<$right){            $i++;       }       while($array[$j]>$middle && $j>$left){           $j--;       }       if ($i <= $j){           $temp = $array[$i];           $array[$i] = $array[$j];           $array[$j] = $temp;           $i++;           $j--;       }    }while($i <= $j);    if ($i < $right){        $array = quickSort($array,$i,$right);    }    if ($j > $left){        $array = quickSort($array,$left,$j);    }    return $array;}$arr = quickSort($arr,0,(count($arr)-1));print_r($arr);

按引用传递:

冒泡排序:

<?php$array = array(5,2,8,1,6,9,12,3,15,20);print_r($array);echo "<br>";$temp;//    $len = count($array);//    for ($i = 0; $i < $len;$i++){//        for ($j = $i+1; $j < $len;$j++){//            if ($array[$i] > $array[$j]){//                $temp = $array[$i];//                $array[$i] = $array[$j];//                $array[$j] = $temp;//            }//        }//    }////print_r($array);function bubbleSort(&$array){    $len = count($array);    for ($i = 0; $i < $len;$i++){        for ($j = $i+1; $j < $len;$j++){            if ($array[$i] > $array[$j]){                $temp = $array[$i];                $array[$i] = $array[$j];                $array[$j] = $temp;            }        }    }}bubbleSort($array);print_r($array);

快速排序:

<?php$arr = array(5,2,8,1,6,9,12,3,15,20);print_r($arr);echo "<br>";function quickSort(&$arr,$left,$right){    $i = $left;    $j = $right;    $middle = $arr[($i+$j)/2];    do{       while($arr[$i]<$middle && $i<$right){            $i++;       }       while($arr[$j]>$middle && $j>$left){           $j--;       }       if ($i <= $j){           $temp = $arr[$i];           $arr[$i] = $arr[$j];           $arr[$j] = $temp;           $i++;           $j--;       }    }while($i <= $j);    if ($i < $right){        quickSort($arr,$i,$right);    }    if ($j > $left){        quickSort($arr,$left,$j);    }}quickSort($arr,0,(count($arr)-1));print_r($arr);
1 0
原创粉丝点击