被比较的数不移动,移动的是比较的数,每一轮比较都得出最小值,下一轮被比较数向右移动一位。
被比较数繁忙,因为要和所有比较数比较
function createNums(){
for($i=0;$i<10;$i++){
$arr[] = random_int(1,100);
}
echo implode(",",$arr);
return $arr;
}
function swap(&$a,&$b){
$temp = $a;
$a = $b;
$b = $temp;
}
$arr = createNums();
function simpleSort($arr){
$length = count($arr);
for($i=0;$i<$length;$i++){//被比较数
for($j=$i+1;$j<$length;$j++){//比较数
if($arr[$i]>$arr[$j]){//被比较数i不移动,移动的是j
swap($arr[$i],$arr[$j]);
}
}
}
return $arr;
}
$rs = simpleSort($arr);
print_r($rs);
如图,被比较的数与数组所有其他值比较,被比较数始终不移动位置,直到一轮比较完成