冒泡排序和快速排序

  1. 冒泡排序(雙for,左比右)
    冒泡排序是比較任何兩個(gè)相鄰的項(xiàng)。如果第一個(gè)比第二個(gè)打,則交換他們。元素項(xiàng)向上移動至正確順序,就好像氣泡升至表面一樣,因此得名
let arr = [1, 66, 95, 25, 18, 8, 41, 88, 4, 37, 6, 72];
    function arrsort(arr) {
      for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < arr.length; j++) {
          let first = arr[j];
          let last = arr[j + 1];
          let value = 0;
          if (first > last) {
            value = first;
            arr[j] = arr[j + 1];
            arr[j + 1] = value;
          }
        }
      }
      return arr
    }
    window.alert(arrsort(arr))
//創(chuàng)建一個(gè)數(shù)組來表示待排序和搜索的數(shù)據(jù)結(jié)構(gòu)
    function ArrayList() {
      var arr = [];
      this.insert = function (item) {//創(chuàng)建一個(gè)插入方法向數(shù)據(jù)結(jié)構(gòu)中添加元素,生成一個(gè)新的數(shù)組
        arr.push(item)
      }

      this.toString = function () {//將數(shù)組中的元素拼接成一個(gè)字符串
        return arr.join()
      }

      this.bubbleSort = function bubbleSort() {//創(chuàng)建一個(gè)冒泡排序的函數(shù)
        var length = arr.length;
        for (let i = 0; i < length; i++) {//從數(shù)組的最后一位迭代至最后一位,決定數(shù)組中進(jìn)行了多少輪排序,輪數(shù)和數(shù)組長度一致
          for (let j = 0; j < length - 1; j++) {//從第一位迭代至倒數(shù)第二位,進(jìn)行的是當(dāng)前項(xiàng)和下一項(xiàng)的比較
            if (arr[j] > arr[j + 1]) {//比較兩項(xiàng)的大小
              swap(arr, j, j + 1)//調(diào)用一個(gè)函數(shù),順序如果不對就交互他們的位置
            }
          }
        }
      }

      //冒泡排序改進(jìn),減去循環(huán)中已跑過的輪數(shù)
      this.modifiedBubbleSort = function(){
        var length = arr.length;
        for(let i = 0 ;i<length;i++){
          for(let j = 0 ;j<length-1-i;j++){
            if(arr[j]>arr[j+1]){
              swap(arr,j,j+1)
            }
          }
        }
      }
    }

    var swap = function (arr, index1, index2) {
      var aux = arr[index1];
      arr[index1] = arr[index2];
      arr[index2] = aux;
    }

    function creatNonSortedArray(size) {
      var arr = new ArrayList();
      for (var i = size; i > 0; i--) {
        arr.insert(i)
      }
      return arr
    }

    var arr = creatNonSortedArray(8);
    console.log(arr.toString())
    arr.modifiedBubbleSort()
    console.log(arr.toString())

2.快速排序

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容