$arr = array(1, 23, 2, 15, 99, 16, 99999, 45, 100, 25, 6, 322);
function sortarr($arr) {
$len = count($arr);
/*for ($i = 0; $i < $len - 1; $i++) { //从左开始往右。小的留在左边。(留住)
for ($j = $i + 1; $j < $len; $j++) {
if ($arr[$i] < $arr[$j]) {
$ano = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $ano;
}
}
}*/
for ($i = 0; $i < $len; $i++) { //从左开始往右。大的往右挪。(浮动)
for ($j = 0; $j < $len-$i-1; $j++) {
if ($arr[$j] > $arr[$j+1]) {
$ano = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $ano;
}
}
}
/*for ($i = 0; $i < $len - 1; $i++) { //从右边开始往左。把大的往前挪。(浮动)
for ($j = $len - 1 ; $j > $i; $j--) {
if ($arr[$j] > $arr[$j-1]) {
$ano = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $ano;
}
}
}*/
/*for ($i = 1; $i < $len; $i++) { //从右开始往左。把小的留住。(留住)
for ($j = $len-$i-1; $j >= 0; $j--) {
if ($arr[$len-$i] > $arr[$j]) {
$ano = $arr[$len-$i];
$arr[$len-$i] = $arr[$j];
$arr[$j] = $ano;
}
}
}*/
foreach ($arr as $value) {
echo $value.' ';
}
}
function sortarr($arr) {
$len = count($arr);
/*for ($i = 0; $i < $len - 1; $i++) { //从左开始往右。小的留在左边。(留住)
for ($j = $i + 1; $j < $len; $j++) {
if ($arr[$i] < $arr[$j]) {
$ano = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $ano;
}
}
}*/
for ($i = 0; $i < $len; $i++) { //从左开始往右。大的往右挪。(浮动)
for ($j = 0; $j < $len-$i-1; $j++) {
if ($arr[$j] > $arr[$j+1]) {
$ano = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $ano;
}
}
}
/*for ($i = 0; $i < $len - 1; $i++) { //从右边开始往左。把大的往前挪。(浮动)
for ($j = $len - 1 ; $j > $i; $j--) {
if ($arr[$j] > $arr[$j-1]) {
$ano = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $ano;
}
}
}*/
/*for ($i = 1; $i < $len; $i++) { //从右开始往左。把小的留住。(留住)
for ($j = $len-$i-1; $j >= 0; $j--) {
if ($arr[$len-$i] > $arr[$j]) {
$ano = $arr[$len-$i];
$arr[$len-$i] = $arr[$j];
$arr[$j] = $ano;
}
}
}*/
foreach ($arr as $value) {
echo $value.' ';
}
}
sortarr($arr);
留住:两个对比的数的标记,一个固定,一个移动。
浮动:两个对比的数的标记都同时移动。
标记可以理解为指向对应变量的一个箭头。轮到谁指向谁。
例如:从左边开始,用留住的,则是左边那个固定,右边的往右移。
从右边开始,用浮动的,则是左右两个同时向左移动。
从左边开始考虑用留住。
从右边开始考虑用浮动。
?时间和空间复杂度?