<font id="zqva1"></font>
<rt id="zqva1"></rt>
  • <tt id="zqva1"></tt>
    <cite id="zqva1"></cite>

    <cite id="zqva1"><noscript id="zqva1"></noscript></cite>
      <rp id="zqva1"><meter id="zqva1"></meter></rp>

        <cite id="zqva1"></cite>
          <b id="zqva1"></b>
          <rp id="zqva1"></rp>
          <cite id="zqva1"></cite>

          <rt id="zqva1"></rt>

        1. <rp id="zqva1"></rp>

          原生js實現冒泡排序算法,javascript冒泡排序

          時間:?2017-11-17閱讀:?1270標簽:?算法

          冒泡排序是一個非常常見的排序算法,對于一個數組,每趟排序時依次比較兩個相鄰的數,如果他們的順序錯誤就交換兩數位置。所以,沒趟排序都會排好一個數字,下一輪排序就可以少比較一個數字,直到只剩下一個數字,就全部排序好了。

          舉個例子,假設最終需要的結果是從小到大排列,對于數組:

          [3, 5, 2, 6, 1, 7, 4]
          

          第一趟排序的過程:

          [3, 5, 2, 6, 1, 7, 4]
          
          // 比較過程:
          // 1. 比較 3 和 5,發現順序正確,則不變
          [3, 5, 2, 6, 1, 7, 4]
          
          // 2. 比較 5 和 2,發現順序錯誤,交換位置
          [3, 2, 5, 6, 1, 7, 4]
          
          // 3. 比較 5 和 6,發現順序正確,不變
          [3, 2, 5, 6, 1, 7, 4]
          
          // 4. 比較 6 和 1,發現順序錯誤,交換位置
          [3, 2, 5, 1, 6, 7, 4]
          
          // 5. 比較 6 和 7,發現順序正確,不變
          [3, 2, 5, 1, 6, 7, 4]
          
          // 5. 比較 7 和 4,發現順序錯誤,交換位置
          [3, 2, 5, 1, 6, 4, 7]
          

          排序過程中,所有相鄰數字對都比較了一遍,比較的過程中,實質上是比較的相鄰位置,而不管位置上的數字是否在上一次比較中交換了位置,只管一個一個位置的比較下去,數字順序錯誤就把數字位置交換。經過這趟排序,發現最大的數字 7 已經排到了最后一個位置,所以下一趟排序就不需要再比較最后一個位置的數字了。

          第二趟排序過程:

          // 經過第一趟排序后的數組
          [3, 2, 5, 1, 6, 4, 7]
          
          // 比較過程:
          // 1. 比較 3 和 2,發現順序錯誤,交換位置
          [2, 3, 5, 1, 6, 4, 7]
          
          // 2. 比較 3 和 5,發現順序正確,不變
          [2, 3, 5, 1, 6, 4, 7]
          
          // 3. 比較 5 和 1,發現順序錯誤,交換位置
          [2, 3, 1, 5, 6, 4, 7]
          
          // 4. 比較 5 和 6,發現順序正確,不變
          [2, 3, 1, 5, 6, 4, 7]
          
          // 5. 比較 6 和 4,發現順序錯誤,交換位置
          [2, 3, 1, 5, 4, 6, 7]
          
          // 最后一個數字不用比較
          

          經過第二趟排序后,數字 6 也排到了正確的位置。第三趟排序時,最后兩位數字都不用比較了。

          每一趟排序,都會把剩余數字中最大的排到最后面。后面的排序過程就不再分析了。清楚了排序過程,寫代碼來排序就很簡單了,代碼如下:

          function bubbleSort(arr) {
              var arr = arr.slice(0); // 保證排序后原數組不變
              var len = arr.length;
              var tmp;
          
              // 只需要進行 len - 1 趟排序
              // 因為只剩下一個數字時不用再比較了
              for (var i = 0; i < len - 1; ++i) {
          
                  // 每一趟都會排序好一個數字
                  // 所以每趟只需排 len - i 個數字
                  for (var j = 1; j < len - i; ++j) {
          
                      // 如果右邊的數比左邊的小
                      // 就交換位置
                      if (arr[j] < arr[j-1]) {
                          tmp = arr[j];
                          arr[j] = arr[j-1];
                          arr[j-1] = tmp;
                      }
                  }
          
                  // 這里可以打印出每趟排序的結果
                  // 以便觀察排序過程
                  // console.log(arr);
              }
          
              return arr;
          }
          
          站長推薦

          1.阿里云: 本站目前使用的是阿里云主機,安全/可靠/穩定。點擊領取2000元代金券、了解最新阿里云產品的各種優惠活動點擊進入

          2.騰訊云: 提供云服務器、云數據庫、云存儲、視頻與CDN、域名等服務。騰訊云各類產品的最新活動,優惠券領取點擊進入

          3.廣告聯盟: 整理了目前主流的廣告聯盟平臺,如果你有流量,可以作為參考選擇適合你的平臺點擊進入

          鏈接: http://www.modern-decoration.com.cn/article/detial/121

          Vue2.x的diff算法記錄

          為什么在Vue3.0都已經出來這么久了我還要寫這篇文章,因為目前自己還在閱讀Vue2.x的源碼,感覺有所悟。作為一個剛畢業的新人,對Vue框架的整體設計和架構突然有了一點認知,所以才沒頭沒尾地突然寫下了diff算法。

          Js常用的算法教程

          Js常用的算法教程 深度廣度、冒泡選擇、防抖節流等,函數在調用倒計時n時間內沒有重復調用,則執行函數,不然重新倒計時

          用 JavaScript 學習算法復雜度

          在后面的例子中,我將引用這兩個數組,一個包含 5 個元素,另一個包含 50 個元素。我還會用到 JavaScript 中方便的 performance API 來衡量執行時間的差異

          js實現分解質因數

          定義一個數組,用來存放因數; 定義數組里面數的位置的起始值0;定義分解質因數的函數;如果被分解的數為1、2、3,則直接存入數組,并返回結果

          Leetcode 242 有效的字母異位詞的三種解法

          題目描述:給定兩個字符串 s 和 t ,編寫一個函數來判斷 t 是否是 s 的字母異位詞。這個題目比較簡單,屬于一眼看過去就有思路的那種。我用了三種解法,你也嘗試一些別的方法, 拓寬思路。

          Js排列組合的實現

          猶記得高中數學,組合表示C(m, n),意思為從集合m,選出n個數生成一項,總共有多少個項的可能?組合是無序的,排列是有序的。所以排列的項數量多于組合

          Js找出數組中出現次數最多的元素

          給定一個數組,找出數組中出現次數最多的元素。給定數組 nums = [3,1,2,1,3,4,3,5,3,6,3], 函數應該返回: 次數最多的元素為:3, 次數為:5

          六種排序算法的Js實現

          本文將介紹數據排序的基本算法和高級算法。這些算法都只依賴數組來存儲數據。數組測試平臺首先我們構造一個數組測試平臺類,這些算法非常逼真地模擬了人類在現實生活中對數據的排序。

          數據結構與算法之緒論

          什么是數據結構?簡單來說可以解釋為:程序設計=數據結構+算法;主要是用來研究數據結構的關系,數據元素之間存在的一種或多種特定關系的集合;

          JS排序算法:記數排序

          計數排序是一個非基于比較的[排序算法],該算法于1954年由 Harold H. Seward 提出。 它的優勢在于在對一定范圍內的整數排序時,它的復雜度為Ο(n+k)(其中k是整數的范圍), 快于任何比較排序算法。

          內容以共享、參考、研究為目的,不存在任何商業目的。其版權屬原作者所有,如有侵權或違規,請與小編聯系!情況屬實本人將予以刪除!

          文章投稿關于web前端網站點搜索站長推薦網站地圖站長QQ:522607023

          小程序專欄: 土味情話心理測試腦筋急轉彎幽默笑話段子句子語錄成語大全運營推廣

          国产精品高清视频免费 - 视频 - 在线观看 - 影视资讯 - 唯爱网