• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    常用的 JS 排序算法 整理版

    來源:懂視網 責編:小采 時間:2020-11-27 22:17:05
    文檔

    常用的 JS 排序算法 整理版

    常用的 JS 排序算法 整理版:1.冒泡排序 var bubbleSort = function(arr) { for (var i = 0, len = arr.length; i < len - 1; i++) { for (var j = i + 1; j < len; j++) { if (arr[i] > arr[j]) { var temp = arr[
    推薦度:
    導讀常用的 JS 排序算法 整理版:1.冒泡排序 var bubbleSort = function(arr) { for (var i = 0, len = arr.length; i < len - 1; i++) { for (var j = i + 1; j < len; j++) { if (arr[i] > arr[j]) { var temp = arr[

    1.冒泡排序

    var bubbleSort = function(arr) {
    
     for (var i = 0, len = arr.length; i < len - 1; i++) {
     for (var j = i + 1; j < len; j++) {
     if (arr[i] > arr[j]) {
     var temp = arr[i];
     arr[i] = arr[j];
     arr[j] = temp;
     }
     }
     }
    
     return arr;
    };

    2.選擇排序

    var selectSort = function(arr) {
    
     var 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;
     }
     }
     if (i != min) {
     swap(arr, i, min);
     }
     console.log(i + 1, ": " + arr);
     }
     return arr;
    };
    
    function swap(arr, index1, index2) {
     var temp = arr[index1];
     arr[index1] = arr[index2];
     arr[index2] = temp;
    };
    

    3.插入排序

    var insertSort = function(arr) {
     var len = arr.length,
     key;
     for (var i = 1; i < len; i++) {
     var j = i;
     key = arr[j];
     while (--j > -1) {
     if (arr[j] > key) {
     arr[j + 1] = arr[j];
     } else {
     break;
     }
     }
     arr[j + 1] = key;
     }
     return arr;
    };

    4.希爾排序

    function shellSort(arr) {
     if (arr.length < 2) {
     return arr;
     };
     var n = arr.length;
     for (gap = Math.floor(n / 2); gap > 0; gap = Math.floor(gap /= 2)) {
     for (i = gap; i < n; ++i) {
     for (j = i - gap; j >= 0 && arr[j + gap] < arr[j]; j -= gap) {
     temp = arr[j];
     arr[j] = arr[j + gap];
     arr[j + gap] = temp;
     }
     }
     }
     return arr;
    };

    5.歸并排序

    function merge(left, right) {
     var result = [];
     while (left.length > 0 && right.length > 0) {
     if (left[0] < right[0]) {
     // shift()方法用于把數組的第一個元素從其中刪除,并返回第一個元素的值
     result.push(left.shift());
     } else {
     result.push(right.shift());
     }
     }
     return result.concat(left).concat(right);
    }
    
    function mergeSort(arr) {
     if (arr.length == 1) {
     return arr;
     }
     var middle = Math.floor(arr.length / 2),
     left = arr.slice(0, middle),
     right = arr.slice(middle);
     return merge(mergeSort(left), mergeSort(right));
    }

    6.快速排序

    var quickSort = function(arr) {  
     if (arr.length <= 1) {
     return arr;
     }
    
     var pivotIndex = Math.floor(arr.length / 2); 
     var pivot = arr.splice(pivotIndex, 1)[0];
    
     var left = [];
     var right = [];  
     for (var i = 0; i < arr.length; i++) {   
     if (arr[i] < pivot) {      
     left.push(arr[i]);    
     } else {      
     right.push(arr[i]);    
     } 
     }  
     return quickSort(left).concat([pivot], quickSort(right));
    
    }; 
    

    算法效率比較

    ---------------------------------------------------------------
    | 排序算法 | 平均情況         | 最好情況   | 最壞情況   | 穩定性 |
    ---------------------------------------------------------------
    | 冒泡排序 |  O(n²)          |  O(n)     |  O(n²)    | 穩定   |
    ---------------------------------------------------------------
    | 選擇排序 |  O(n²)          |  O(n²)    |  O(n²)    | 不穩定 |
    ---------------------------------------------------------------
    | 插入排序 |  O(n²)          |  O(n)     |  O(n²)    | 穩定   |
    ---------------------------------------------------------------
    | 希爾排序 |  O(nlogn)~O(n²) |  O(n^1.5) |  O(n²)    | 不穩定 |
    ---------------------------------------------------------------
    | 歸并排序 |  O(nlogn)       |  O(nlogn) |  O(nlogn) | 穩定   |
    ---------------------------------------------------------------
    | 快速排序 |  O(nlogn)       |  O(nlogn) |  O(n²)    | 不穩定 |
    ---------------------------------------------------------------

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    常用的 JS 排序算法 整理版

    常用的 JS 排序算法 整理版:1.冒泡排序 var bubbleSort = function(arr) { for (var i = 0, len = arr.length; i < len - 1; i++) { for (var j = i + 1; j < len; j++) { if (arr[i] > arr[j]) { var temp = arr[
    推薦度:
    標簽: 整理 js 排序
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产一区二区精品久久岳| 日本午夜精品理论片A级APP发布| 国产乱码伦精品一区二区三区麻豆| 精品一区二区三区东京热| 久久国产精品偷99| 亚洲嫩草影院久久精品| 99热在线日韩精品免费| 麻豆国产在线精品国偷产拍| 欧洲精品一区二区三区在线观看| 大胸国产精品视频| 国产成人精品日本亚洲直接| 日产精品久久久一区二区| 日韩午夜高清福利片在线观看欧美亚洲精品suv| 久久精品国产69国产精品亚洲| 日韩精品久久久久久免费| 中文无码久久精品| 欧美激情精品久久久久久| 国产三级精品三级| 99久久精品无码一区二区毛片 | 亚洲精品无码不卡| 91麻豆精品国产自产在线观看一区| 无码精品黑人一区二区三区| 亚欧无码精品无码有性视频| 久久精品中文字幕一区| 精品久久久久久无码人妻热 | 久久久久久夜精品精品免费啦| 亚洲欧美精品SUV| 亚洲精品乱码久久久久久蜜桃不卡| 日韩精品一区二区三区视频| 蜜臀AV无码国产精品色午夜麻豆 | 99九九精品免费视频观看| 久久精品国产91久久综合麻豆自制| 国内精品久久久久影院一蜜桃| 久久精品蜜芽亚洲国产AV| 久久久一本精品99久久精品88| 久久综合久久自在自线精品自| 亚洲综合av永久无码精品一区二区| 中文国产成人精品久久不卡 | 精品国产香蕉伊思人在线在线亚洲一区二区 | 精品一区二区三区色花堂| 黑巨人与欧美精品一区|