您的位置:首页 > 编程语言 > PHP开发

冒泡排序PHP实现

2014-10-26 01:09 330 查看
$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.'     ';
}

}

sortarr($arr);

留住:两个对比的数的标记,一个固定,一个移动。

浮动:两个对比的数的标记都同时移动。

标记可以理解为指向对应变量的一个箭头。轮到谁指向谁。

例如:从左边开始,用留住的,则是左边那个固定,右边的往右移。

    从右边开始,用浮动的,则是左右两个同时向左移动。

从左边开始考虑用留住。

从右边开始考虑用浮动。

?时间和空间复杂度?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  冒泡排序 php