php排序算法(冒泡排序,快速排序)
2013-09-25 06:54
513 查看
冒泡排序实现原理
① 首先将所有待排序的数字放入工作列表中。
② 从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。
③ 重复步骤②,直至再也不能交换。
代码实现
复制代码代码如下:
<?php
/**
冒泡排序 by www.jbxue.com
*/
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>';
快速排序实现原理
采用分治的思想:先保证列表的前半部分都小于后半部分,然后分别对前半部分和后半部分排序,这样整个列表就有序了。
代码实现
复制代码代码如下:
/**
插入排序 by www.jbxue.com
*/
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>';
① 首先将所有待排序的数字放入工作列表中。
② 从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。
③ 重复步骤②,直至再也不能交换。
代码实现
复制代码代码如下:
<?php
/**
冒泡排序 by www.jbxue.com
*/
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>';
快速排序实现原理
采用分治的思想:先保证列表的前半部分都小于后半部分,然后分别对前半部分和后半部分排序,这样整个列表就有序了。
代码实现
复制代码代码如下:
/**
插入排序 by www.jbxue.com
*/
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>';
相关文章推荐
- PHP中数组的三种排序方法分享
- PHP插入排序实现代码
- php判断服务器是否支持Gzip压缩功能
- 使用php判断网页是否gzip压缩
- WordPress RokMicroNews插件‘thumb.php’ 多个安全漏洞
- WordPress RokIntroScroller插件‘thumb.php’多个安全漏洞
- WordPress Complete Gallery Manager插件‘upload-images.php’任意文件上传漏洞
- WordPress RokNewsPager插件‘thumb.php’多个安全漏洞
- 一个PHP的远程图片抓取函数分享
- PHP nusoap返回UTF-8中文乱码的解决办法
- 统计过去数据一个php脚本
- FTPClient上传 中文目录、中文文件名乱码问题
- php遍历所有文件
- PHPCMS problems set
- 无法正常访问FTP服务(Windows 7 + VirtualBox + Ubuntu + vsftpd)
- 如何用PHP实现页面跳转?
- PHP你可能也会掉入的坑
- PHP学习教程汇总
- Session锁和session_write_close和session_commit函数
- 09-24 code