简单算法-冒泡排序[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代码实现
这里引入第二个参数选择是否降序。默认false。
同时运用eval()函数将运算符和变量结合变成语句
避免用if语句
先假设我们有一个简单的数组 [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算法最简单的一例---冒泡排序
- PHP实现冒泡排序的简单实例
- 简单Floyd php 实现 只为熟悉算法
- PHP实现图的邻接矩阵表示及几种简单遍历算法分析
- PHP实现的简单组词算法示例
- 常用算法——PHP实现冒泡排序
- PHP 实现多人领奖的简单算法
- 【算法】PHP实现冒泡排序和快速排序--防遗忘
- 基本算法简单实现-二分法查找、合并排序、冒泡排序、插入排序、选择排序、快速排序
- PHP实现冒泡排序的简单实例
- 最简单的排序算法之一冒泡排序----js实现
- PHP实现的简单排列组合算法应用示例
- 啊哈!算法 - 桶排序,冒泡排序,快速排序 - PHP实现
- PHP简单实现冒泡排序的方法
- [李景山php]算法系列|php 实现 冒泡排序!
- php实现简单洗牌算法
- 内部排序冒泡排序、插入排序、选择排序、快速排序的算法和PHP实现
- js或者php简单实现购买产品满1年优惠2个月的算法
- PHP算法学习之“简单的交换排序”,“冒泡排序”以及“改进后的冒泡排序”
- 简单PHP图像计数器实现