声明:本文是在参考资料后所做的总结,对其中的部分优质内容会有“复制粘贴”操作。由于水平有限,不足之处在所难免,欢迎大家留言指正
算法步骤:
- 无序数列A[a0,a1,…,an-1] ,长度为 n=A.length;
- 比较ai和ai+1,如果ai>ai+1,则交换ai和ai+1的值。如果i=n-1,则n = n-1,其中i∈[0,n);
- 重复步骤2,如果n<=1,结束比较;
实现代码1(javascript):
<script type="text/javascript">
function bubbleSort(array) {
var i = array.length, j;
var tempExchangVal;
while (i > 1) {
console.log("第"+(array.length-i+1)+"次冒泡:");
for (j = 0; j < i - 1; j++) {
if (array[j] > array[j + 1]) {
tempExchangVal = array[j];
array[j] = array[j + 1];
array[j + 1] = tempExchangVal;
}
console.log(array);
}
i--;
}
return array;
}
var arr = [4,9,3,6,0,1,5];
bubbleSort(arr);
</script>
实现代码2(PHP):
<?php
function bubbleSort(array &$array){
$length = count($array);
$tempExchangVal = NULL;
while ($length > 1) {
echo "第".(count($array)-$length+1)."次冒泡:"."</br>";
for ($i=0; $i < $length-1; $i++) {
if ($array[$i] > $array[$i+1]) {
$tempExchangVal = $array[$i+1];
$array[$i+1] = $array[$i];
$array[$i] = $tempExchangVal;
}
foreach ($array as $value) {
echo $value." ";
}
echo "</br>";
}
$length--;
echo "</br>";
}
return $array;
}
$arr = [4,9,3,6,0,1,5];
bubbleSort($arr);
?>
运行结果:
第1次冒泡:
[4, 9, 3, 6, 0, 1, 5]
[4, 3, 9, 6, 0, 1, 5]
[4, 3, 6, 9, 0, 1, 5]
[4, 3, 6, 0, 9, 1, 5]
[4, 3, 6, 0, 1, 9, 5]
[4, 3, 6, 0, 1, 5, 9]
第2次冒泡:
[3, 4, 6, 0, 1, 5, 9]
[3, 4, 6, 0, 1, 5, 9]
[3, 4, 0, 6, 1, 5, 9]
[3, 4, 0, 1, 6, 5, 9]
[3, 4, 0, 1, 5, 6, 9]
第3次冒泡:
[3, 4, 0, 1, 5, 6, 9]
[3, 0, 4, 1, 5, 6, 9]
[3, 0, 1, 4, 5, 6, 9]
[3, 0, 1, 4, 5, 6, 9]
第4次冒泡:
[0, 3, 1, 4, 5, 6, 9]
[0, 1, 3, 4, 5, 6, 9]
[0, 1, 3, 4, 5, 6, 9]
第5次冒泡:
[0, 1, 3, 4, 5, 6, 9]
[0, 1, 3, 4, 5, 6, 9]
第6次冒泡:
[0, 1, 3, 4, 5, 6, 9]