冒泡排序的原理
比方说有五个数字54321,要按从小到大排列,首先比较前两个,就是5和4,如
果第一个小于第二个,不操作,如果第一个大于第二个,那么交换两者的位置,即
变成45321,然后比较第二个和第三个,同理变成43521,然后第三个和第四个,
第四个和第五个,这样一次循环下来,变成43215
第一个for,应该指的是这个数组所拥有的元素个数-1,因为如果只有一个数的话,
就不需要比较,如果有两数的话,就需要比较1趟,有三个数的话,需要比较2趟,
所以第一个for的次数就是元素个数num.length-1。
第二个for,可以理解为第i趟时,只需要对剩余的num.length-i的元素进行排序。
比如一个数组有3个数时,第一趟,只需要比较2次,第二趟,只需要比较1次,
所以是num.length-i。
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
var num = [2, 82, 67, -34, 0, 65, 12]
function print(arr) {
for (var i = 0; i <= num.length -1; i++) { //外层控制轮数
for (var j = 0; j < num.length - 1 -i; j++) { //内层循环 控制比较的次数
if (num[j] > num[j + 1]) {
var temp = num[j] //定义一个变量,将两个数最大的值赋值给temp
num[j] = num[j+1]
num[j+1] =temp
}
}
}
document.write(num)
}
print()
</script>
</body>
</html>