溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解JavaScript冒泡排序與選擇排序

發(fā)布時間:2021-12-17 09:36:46 來源:億速云 閱讀:142 作者:iii 欄目:web開發(fā)

本篇內(nèi)容主要講解“怎么理解JavaScript冒泡排序與選擇排序”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么理解JavaScript冒泡排序與選擇排序”吧!

怎么理解JavaScript冒泡排序與選擇排序

JavaScript冒泡排序與選擇排序

冒泡排序

  • 原理:

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

  • 思路:

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

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

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

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

算法可視化:

怎么理解JavaScript冒泡排序與選擇排序

代碼如下:

 <script>
        function ismaopao(arr) {
            //控制比較輪數(shù)
            for (var i = 0; i < arr.length - 1; i++) {
                //冒泡排序,兩兩交換,從頭開始做比較(大數(shù)下沉)
                for (var j = 0; j < arr.length - 1 - i; j++) {
                    //arr.length-1-i,因為前面的判斷已經(jīng)找到最大的值,就不需要與找到的大數(shù)做比較了
                    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>

結(jié)果如下:

怎么理解JavaScript冒泡排序與選擇排序

選擇排序

  • 思路:

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

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

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

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

算法可視化:

怎么理解JavaScript冒泡排序與選擇排序

代碼如下:

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

<script>
        //選擇排序,比冒泡排序次數(shù)少
        var arr = [5, 3, 4, 2, 1]
        var min = 0; //定義一個Min為數(shù)組的下標
        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;
            // 現(xiàn)在min的值就是對應著數(shù)組最小值的下標,
            // 然后再用下標為i對應數(shù)組中的值來交換,i隨著每一輪的變化而變化
            a = arr[min];
            arr[min] = arr[i];
            arr[i] = a;
        }
        console.log(arr);
    </script>

結(jié)果如下:

怎么理解JavaScript冒泡排序與選擇排序

到此,相信大家對“怎么理解JavaScript冒泡排序與選擇排序”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI