php排序算法(冒泡排序,快速排序)

yipeiwu_com6年前PHP代码库

冒泡排序实现原理

① 首先将所有待排序的数字放入工作列表中。
② 从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。

③ 重复步骤②,直至再也不能交换。

代码实现

复制代码 代码如下:

<?php
 function bubbingSort(array $array)
 {
     for($i=0, $len=count($array)-1; $i<$len; ++$i)
     {
         for($j=$len; $j>$i; --$j)
         {
             if($array[$j] < $array[$j-1])
             {
                 $temp = $array[$j];
                 $array[$j] = $array[$j-1];
                 $array[$j-1] = $temp;
             }
         }
     }
     return $array;
 }

 print '<pre>';
 print_r(bubbingSort(array(1,4,22,5,7,6,9)));
 print '</pre>';

快速排序实现原理
采用分治的思想:先保证列表的前半部分都小于后半部分,然后分别对前半部分和后半部分排序,这样整个列表就有序了。

代码实现

复制代码 代码如下:

function quickSort(array $array)
 {
     $len = count($array);
     if($len <= 1)
     {
         return $array;
     }
     $key = $array[0];
     $left = array();
     $right = array();
     for($i=1; $i<$len; ++$i)
     {
         if($array[$i] < $key)
         {
             $left[] = $array[$i];
         }
         else
         {
             $right[] = $array[$i];
         }
     }
     $left = quickSort($left);
     $right = quickSort($right);
     return array_merge($left, array($key), $right);
 }

 print '<pre>';
 print_r(quickSort(array(1,4,22,5,7,6,9)));
 print '</pre>';

相关文章

ob_start(),ob_start('ob_gzhandler')使用

输出前使用尽量使用 ob_start();可以加快输出速度,适用NT 对unix类服务器 如果使用ob_start('ob_gzhandler');输出效率将更高...

php银联网页支付实现方法

本文实例讲述了php银联网页支付实现方法。分享给大家供大家参考。具体分析如下: 这里介绍的银联WAP支付功能,仅限消费功能。 1. PHP代码如下: 复制代码 代码如下:<?...

PHP中遍历数组的三种常用方法实例分析

PHP中遍历数组的三种常用方法实例分析

本文实例讲述了PHP中遍历数组的三种常用方法。分享给大家供大家参考,具体如下: 在PHP中操作最多的数据估计也就是数组了,有着效率高、速度快、存储方便的特点。 PHP中遍历数组有三种常用...

php截取后台登陆密码的代码

if($_POST[loginsubmit]!=){ //判断是否点了登陆按钮 $sb=user:.$_POST[username].--passwd:.$_POST[password]...

PHP函数按引用传递参数及函数可选参数用法示例

本文实例讲述了PHP函数按引用传递参数及函数可选参数用法。分享给大家供大家参考,具体如下: 一、函数按引用传递参数 1. 代码 <!DOCTYPE html PUBLIC "-...