思路:冒泡排序法
1.相邻两个元素比较,交换顺序
2.执行一趟,排序一个元素
<?php
/**
* Created by PhpStorm.
* User: jiaoyang
* Date: 2019/8/6
* Time: 下午10:05
*/
namespace app\index\controller;
use think\Controller;
use think\Exception;
/**
* 思路:冒泡排序法
* 1.相邻两个元素比较,交换顺序
* 2.执行一趟,排序一个元素
* Class BubbleSort
* @package app\index\controller
*/
class BubbleSort extends Controller
{
public function sort(){
$arr = [9,10,6,3,5,7,8];
print_r($this->bubbleSort($arr));
}
public function bubbleSort($arr){
if(!is_array($arr)){
throw new Exception('不是一个合法的数组');
}
$len = count($arr);
for($i = 1;$i<=$len;$i++){ //控制执行多少趟,n个元素,要执行n趟
for($j = 0;$j<$len-$i;$j++){ //每趟需要比较的数,每执行一趟,排序好一个元素,所以每趟比较次数减一
$this->swap($arr[$j],$arr[$j+1]);
}
}
return $arr;
}
public function swap(&$a,&$b){
if($a>$b){
$tmp = $a;
$a = $b;
$b = $tmp;
}
}
}
网友评论