您的位置:首页 > 编程语言 > PHP开发

简单算法-冒泡排序[php实现]

2017-07-01 19:02 357 查看
冒泡排序的原理是:每次将相邻两个数比较,将小的或大的调到前面,进行N轮之后,就可以得到排序之后的数组,同时冒泡排序还是一种稳定排序

先假设我们有一个简单的数组 [2,3,1,4],要将他从大到小排序

第一轮 经过三次两两交换, 可以得到 3 2 4 1的结果 , 此时 ,最小数1已经变成数组最后一位

第二轮 因为1已经不需要参与排序, 所以经过两次两两交换 , 就可以得到 3 4 2 1的结果,此时,最小的两个数已经排出

同理第三轮 因为只有两个数参与排序 ,所以只需要一次排序,就可以得到4 3 2 1的结果

总结一下上面的经过

长度为4的数组,经过3轮,可以得到结果,第1轮,需要3次排序,也就是4-1,第2轮,需要4-2次排序

至此,可以得到一个通用的结论

一个长度为n的数组,可以经过i轮排序(其中,i=n-1),每一轮需要n-i次排序,可以得到冒泡排序结果

总次数为



简单的一段php代码实现

function bubbleSortArr(array $arr,$isDesc = false)
{
$k = count($arr);
$operator = $isDesc ? "<" : ">";
for ($i = 1 ; $i < $k; $i++)
{
for ($j = 0 ; $j < $k - $i ; $j++ )
{
$statement = $arr[$j] .$operator .$arr[$j+1];
if (eval("return $statement;"))
{
$temp =  $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
}
}
}
return $arr;
}


这里引入第二个参数选择是否降序。默认false。

同时运用eval()函数将运算符和变量结合变成语句

避免用if语句
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  冒泡排序 php 算法