助力软件开发企业降本增效 PHP / java源码系统,只需一次付费,代码终身使用! 广告
## 这个应该是最大众的排序了。也算是简单排序算法中知名度最高的。 ## ## 冒泡排序的思路是怎么样的呢? ## ## 首先就是先比较相邻的两个元素,如果满足条件,就交换,否则不动。 ## ## 然后是再比较接下来的两个相邻的元素,然后满足条件就交换,否则依然不动。 ## ## 依次循环操作下去,最终一个元素,会固定在最下边。 ## ## 举例: ## ## 数组有5个元素从小到大排序,首先第一个和第二个比,第一个比第二个大,就交换,否则不操作 ## ## 然后第二个和第三个比较,第二个大于第三个则交换,否则依然不动。直到对比到第四个和第五个对比。 ## ## 经过一轮的循环对比,最大的数字就下沉到最下边了。小的数字逐渐向上浮出。 ## 第一种写法 `~~~ class Maopao{ public function index(){ $arr = [1,2,9,3,6,7,4,5]; $data = $this->sort($arr); var_dump($data); } /** * @param $arr * @return mixed */ public function sort($arr){ $len = count($arr); for ($i=0;$i<$len-1;$i++){ for ($j=0;$j<$len-$i-1;$j++) { if ($arr[$j] > $arr[$j + 1]) { $tmp = $arr[$j]; $arr[$j] = $arr[$j + 1]; $arr[$j + 1] = $tmp; } } } return $arr; } } ~~~` ## 第二种写法 `~~~ class Maopao{ public function index(){ $arr = [1,2,9,3,6,7,4,5]; $data = $this->sort($arr); var_dump($data); } /** * @param $arr * @return mixed */ public function sort($arr) { $len = count($arr); for ($i = 0; $i < $len - 1; $i++) {//循环比对的轮数 for ($j = $i + 1; $j < $len; $j++) {//从第二个开始循环,循环到最后一个,逐一和第一个比较 if ($arr[$i] > $arr[$j]) {//前边大于后边的则交换 $tmp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $tmp; } } } return $arr; } } ~~~`