JavaScript冒泡排序

冒泡排序的原理

比方说有五个数字54321,要按从小到大排列,首先比较前两个,就是5和4,
若是第一个小于第二个,不操做,若是第一个大于第二个,那么交换二者的位置,即
变成45321,而后比较第二个和第三个,同理变成43521,而后第三个和第四个,
第四个和第五个,这样一次循环下来,变成43215

因此,一层循环的效果就是挑出最大的一个数字5,冒泡到最后面。可是还要挑出第二大,
第三大的数字,等等。因此一层循环根本就不够用,必须再套一层才行。像这个例子,
五个数字,起码要进行四轮循环才行。至于为何要this.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; i++) {
                    for (var j = 0; j < num.length - 1; 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>