/**
* Created by PhpStorm.
* User: baimayou
* Date: 19-4-6
* Time: 下午2:45
* 冒泡排序
* 原理:每次冒泡排序都会对相邻两个元素进行比较,每趟冒泡排序都会选出最大的数据到末尾
* 解法:因为是两两交换,所以不需要设置最大值,每次八比较的相邻元素中的最大值放在靠后的位置即可;
* 有两层循环,第一层控制趟数,第二层控制交换的次数,所以长度是 $len - $i -1 ,因为末尾的额 i 个元素位置已经确定,不需要排序
* 注意:可在每次交换前设置一个标志位,若一趟没有发生交换,证明序列已经有序,不需要在进行比较,程序退出
*/
function BubbleSort($str){
$arr = str_split($str);
$len = count($arr);
for($i = 0;$i < $len;$i++){
$flag = false;
for($j = 0;$j < $len - $i -1;$j++){
if($arr[$j] > $arr[$j + 1]){
temp($arr,$j+1,$j);
$flag = true;
}
}
if(!$flag){
break;
}
}
return $arr;
}
function temp(&$arr,$i,$j){
$temp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $temp;
}
//$str = '7485123';
//$arr = BubbleSort($str);
//var_dump($arr);