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>
相關文章
相關標籤/搜索