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

原创 2017年01月03日 22:15:44

声明

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);
版权声明:本文为博主原创文章,未经博主允许不得转载。转载请发邮件到skyeinfo@qq.com

php四种基础算法:冒泡,选择,插入和快速排序法

需求:分别用 冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中 的值按照从小到的顺序进行排序。  $arr(1,43,54,62,21,66,32,78,36,76,39); 1. ...
  • guowenwen_0416
  • guowenwen_0416
  • 2016年10月10日 16:16
  • 5161

使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组。

  • wugang806894
  • wugang806894
  • 2013年10月13日 17:33
  • 2035

冒泡、选择和快速排序算法的C++实现

冒泡、选择和快速排序算法的C++实现 #include using namespace std; void print(int* pData, int count){ for (int i = ...
  • chinawangfei
  • chinawangfei
  • 2016年02月29日 14:31
  • 1898

js实现两种实用的排序算法——冒泡、快速排序

分享记录两种程序员必备的排序算法:冒泡算法、排序算法,面试日常,很实用!...
  • Loving_M
  • Loving_M
  • 2016年11月01日 10:29
  • 21460

排序(冒泡排序与快速排序)

1、冒泡排序(Bubble Sort)
  • u014174811
  • u014174811
  • 2014年11月23日 17:22
  • 754

java实现各种排序算法(包括冒泡排序,选择排序,插入排序,快速排序(简洁版))及性能测试

1、冒泡排序是排序里面最简单的了,但性能也最差,数量小的时候还可以,数量一多,是非常慢的。      它的时间复杂度是O(n*n),空间复杂度是O(1)      代码如下,很好理解。 ...
  • qq_21439971
  • qq_21439971
  • 2016年12月27日 14:36
  • 8059

java冒泡排序和快速排序的分析

说来惭愧,昨天面试的时候遇到快速排序的笔试题没答上来。搞java的长期接触的是业务方面的东西,特别是web方向的java,久而久之在学校里面学的最基本的一些东西给忘记了。网上搜索了这两种算法,基本都是...
  • weinianjie1
  • weinianjie1
  • 2015年05月19日 22:31
  • 1012

PHP实现排序算法----冒泡排序(Bubble Sort)

基本思想:冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。简单交换排序:我们先来看看在没有学习各种排序方法前经常使用的排序方法(至少我是这样。...
  • baidu_30000217
  • baidu_30000217
  • 2016年11月07日 21:01
  • 2128

冒泡排序-插入排序-快速排序-选择排序---飞天博客

请看文章: 排序经典集合:插入排序,冒泡排序,快速排序,选择排序,代码简单请看下面的基本介绍和代码 插入排序:直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到一排好序的有序表中   ...
  • xh199110
  • xh199110
  • 2014年09月29日 17:37
  • 1640

用JS实现冒泡排序、插入排序、选择排序、快速排序

这些基础的排序算法无论用什么语言,还是都能实现的。
  • ll328062201
  • ll328062201
  • 2014年09月30日 12:11
  • 1304
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP实现冒泡排序和快速排序
举报原因:
原因补充:

(最多只允许输入30个字)