PHP排序算法
时间:2008-06-28
来源:互联网
冒泡排序算法
复制PHP内容到剪贴板
<?php
//冒泡排序算法
$arr = array(12,52,14,43,24,58,15,64,24,57,17,56,45);
$count = count($arr);
for($i = $count-1; $i>0; --$i)
{
for($j = 0; $j < $i; ++$j)
{
if($arr[$j] > $arr[$j + 1])
{
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
}
}
}
print_r($arr);
?>
插入排序:
PHP代码:
<?php
//冒泡排序算法
$arr = array(12,52,14,43,24,58,15,64,24,57,17,56,45);
$count = count($arr);
for($i = $count-1; $i>0; --$i)
{
for($j = 0; $j < $i; ++$j)
{
if($arr[$j] > $arr[$j + 1])
{
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
}
}
}
print_r($arr);
?>
复制PHP内容到剪贴板
<?php
for($i=0; $i<1000; ++$i)
{
$arr[] = mt_rand(1,1000);
}
$count = count($arr);
$start = microtime(true);
for ($i = 1; $i < $count ; ++$i)
{
$temp = $arr[$i];
$j = $i;
while($j > 0 && $arr[$j-1] >= $temp)
{
$arr[$j] = $arr[$j-1];
--$j;
}
$arr[$j] = $temp;
}
?>
快速排序:
PHP代码:
<?php
for($i=0; $i<1000; ++$i)
{
$arr[] = mt_rand(1,1000);
}
$count = count($arr);
$start = microtime(true);
for ($i = 1; $i < $count ; ++$i)
{
$temp = $arr[$i];
$j = $i;
while($j > 0 && $arr[$j-1] >= $temp)
{
$arr[$j] = $arr[$j-1];
--$j;
}
$arr[$j] = $temp;
}
?>
复制PHP内容到剪贴板
<?php
$start = microtime(true);
function initArr()
{
for($i=0; $i<10; ++$i)
{
$arr[] = mt_rand(1,100);
}
return $arr;
}
function swap(&$arr, $leftptr, $rightptr)
{
$temp = $arr[$leftptr];
$arr[$leftptr] = $arr[$rightptr];
$arr[$rightptr] = $temp;
}
function quickSort()
{
$arr = initArr();
$count = count($arr);
recQuickSort($arr, 0, $count-1);
print_r($arr);
}
function recQuickSort(&$arr, $left, $right)
{
if($right - $left <=0)
return;
else{
$pivot = $arr[$right];
$partition = patitionIt($arr, $left, $right, $pivot);
recQuickSort($arr, $left, $partition-1);
recQuickSort($arr, $partition +1, $right);
}
}
function patitionIt(&$arr, $left, $right, $pivot)
{
$leftptr = $left - 1;
$rightptr = $right;
while (true)
{
while ($arr[++$leftptr] < $pivot)
{
;
}
while ($rightptr > 0 &&
$arr[--$rightptr] > $pivot)
{
}
if($leftptr >= $rightptr)
{
break;
}else
{
swap($arr, $leftptr, $rightptr);
}
}
return $leftptr;
}
quickSort();
$end = microtime(true);
echo $end - $start;
?>
PHP代码:
<?php
$start = microtime(true);
function initArr()
{
for($i=0; $i<10; ++$i)
{
$arr[] = mt_rand(1,100);
}
return $arr;
}
function swap(&$arr, $leftptr, $rightptr)
{
$temp = $arr[$leftptr];
$arr[$leftptr] = $arr[$rightptr];
$arr[$rightptr] = $temp;
}
function quickSort()
{
$arr = initArr();
$count = count($arr);
recQuickSort($arr, 0, $count-1);
print_r($arr);
}
function recQuickSort(&$arr, $left, $right)
{
if($right - $left <=0)
return;
else{
$pivot = $arr[$right];
$partition = patitionIt($arr, $left, $right, $pivot);
recQuickSort($arr, $left, $partition-1);
recQuickSort($arr, $partition +1, $right);
}
}
function patitionIt(&$arr, $left, $right, $pivot)
{
$leftptr = $left - 1;
$rightptr = $right;
while (true)
{
while ($arr[++$leftptr] < $pivot)
{
;
}
while ($rightptr > 0 &&
$arr[--$rightptr] > $pivot)
{
}
if($leftptr >= $rightptr)
{
break;
}else
{
swap($arr, $leftptr, $rightptr);
}
}
return $leftptr;
}
quickSort();
$end = microtime(true);
echo $end - $start;
?>
作者: jfcat 发布时间: 2008-06-27
完全可以使用内置的sort函数
如果要学习如何进行算法实现,不妨考虑使用C/C++、Pascal语言等
如果要学习如何进行算法实现,不妨考虑使用C/C++、Pascal语言等
作者: ShiningRay 发布时间: 2008-06-27
算法只是思想吗,为什么要分实现的语言呢,不同的语言只要能实现就行
作者: jfcat 发布时间: 2008-06-30
觉得那个帽泡排序很实在用,DING下,
作者: dersym 发布时间: 2008-06-30
冒泡算法。学C语言时的经典例子
作者: dmkf 发布时间: 2008-07-01
引用:
原帖由 dersym 于 2008-6-30 23:45 发表觉得那个帽泡排序很实在用,DING下,
php内置的array_sort不是堆排序,就是快速排序,都是 O(log2n),冒泡一般来说只存在于教科书上
如果让我写一个简单的,我宁愿写一个二分查找+插入的混合算法,理论上也是O(log2n)
作者: slawdan 发布时间: 2008-07-01
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28