站長資訊網
        最全最豐富的資訊網站

        一分鐘徹底理解JavaScript冒泡排序與選擇排序

        本篇文章我們來了解一下JavaScript中的冒泡排序與選擇排序的相關知識,起泡法每次比較就要立刻交換,而選擇排序是把未排序最小的數找出來與它應在的位置上的元素交換。選擇排序交換次數較少,一定程度上提高了運算效率。希望對大家有幫助。

        一分鐘徹底理解JavaScript冒泡排序與選擇排序

        JavaScript冒泡排序與選擇排序

        冒泡排序

        • 原理:

        比較兩個相鄰的元素,將值大的元素交換到右邊,直到最右邊。注意核心是相鄰。

        • 思路:

        依次比較相鄰的兩個數,將比較小的數放在前面,比較大的數放在后面。第一輪下來數組中最大的數會排在最后面。

        第二輪:然后數組再剩余的數中從第一個數依次比較相鄰的數,將最大的數排在最后面。

        重復步驟,直到排序完成。

        注意:到倒數第二輪完時,最后一輪還剩一個數,肯定是最小的,所以不用排序。即就是只用排序 數組的長度減一(arr.length-1)輪

        算法可視化:

        一分鐘徹底理解JavaScript冒泡排序與選擇排序

        代碼如下:

         <script>         function ismaopao(arr) {             //控制比較輪數             for (var i = 0; i < arr.length - 1; i++) {                 //冒泡排序,兩兩交換,從頭開始做比較(大數下沉)                 for (var j = 0; j < arr.length - 1 - i; j++) {                     //arr.length-1-i,因為前面的判斷已經找到最大的值,就不需要與找到的大數做比較了                     if (arr[j] > arr[j + 1]) {                         var a;                         a = arr[j];                         arr[j] = arr[j + 1];                         arr[j + 1] = a;                     }                 }             }             return arr;         }         console.log(ismaopao([6, 3, 4, 5, 2, 1]))     </script>

        結果如下:

        一分鐘徹底理解JavaScript冒泡排序與選擇排序

        選擇排序

        • 思路:

        假設數組第一個位置的數最小,然后與后面的每一個數進行比較,只要找到更小的就交換值對應的下標,注意是下標。第一輪找一遍之后可以鎖定到最小值的位置了(就是找到了下標)然后就交換值。

        第二輪假設第二個位置的數最小,這時候不用管數組第一個值(因為第一輪找到已經是最小的了)然后與后面最小值交換下標,鎖定后再交換值。

        重復步驟,直到排序完成。

        注意:到倒數第二輪完時,最后一輪還剩一個數,肯定是比前面的數都還大,所以不用排序。即就是只用排序 數組的長度減一(arr.length-1)輪

        算法可視化:

        一分鐘徹底理解JavaScript冒泡排序與選擇排序

        代碼如下:

        沒有封裝,大家可以自己封裝一下

        <script>         //選擇排序,比冒泡排序次數少         var arr = [5, 3, 4, 2, 1]         var min = 0; //定義一個Min為數組的下標         for (var i = 0; i < arr.length - 1; i++) {             min = i;             for (var j = i + 1; j < arr.length; j++) {                 if (arr[min] > arr[j]) {                     min = j; //交換下標,就是交換位置                 }             }             var a = 0;             // 現在min的值就是對應著數組最小值的下標,             // 然后再用下標為i對應數組中的值來交換,i隨著每一輪的變化而變化             a = arr[min];             arr[min] = arr[i];             arr[i] = a;         }         console.log(arr);     </script>

        結果如下:

        一分鐘徹底理解JavaScript冒泡排序與選擇排序

        相關視頻教程推薦:jQuery視頻教程

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 久久亚洲私人国产精品vA| 久久国产精品国产自线拍免费| 中文字幕精品亚洲无线码一区| 亚洲日韩精品无码专区网站| 一本一本久久a久久精品综合麻豆| 亚洲婷婷国产精品电影人久久| 亚洲一区无码精品色| 久久久国产精品亚洲一区| 精品少妇一区二区三区视频| 人精品影院| 一本色道久久综合亚洲精品| 99久久久精品免费观看国产| 9re热国产这里只有精品| 亚洲精品WWW久久久久久| 99在线精品视频观看免费| 亚洲国产美女精品久久久久∴| 国产日韩精品欧美一区喷水| 99精品国产福利在线观看| 人妻少妇精品无码专区动漫| 99久久er这里只有精品18| 国产午夜福利精品久久| 欧美精品中文字幕亚洲专区| 2020最新久久久视精品爱| 日本精品视频在线观看| 久久精品中文字幕无码绿巨人| 国产伦精品一区二区三区视频金莲| 亚洲AV永久精品爱情岛论坛| 91热成人精品国产免费| 人妻少妇精品中文字幕AV| 国産精品久久久久久久| 国产精品水嫩水嫩| 青春草无码精品视频在线观| 欧美成人精品一级高清片| 无码日韩精品一区二区人妻| 欧美精品一区二区精品久久| 国产区精品一区二区不卡中文 | 久久97久久97精品免视看| 国产精品自在拍一区二区不卡| 香蕉久久夜色精品升级完成| 亚洲国产精品无码久久SM| 精品国产一区二区三区AV性色|