javascript 數組排序

 javascript 數組排序javascript

1、冒泡法排序前端

廢話不說  直接擼java

function bubbleSort(arr){
for (let i=1;i<arr.length;i++){
for (let j=0;j<arr.length;j++){
//打印不排序的狀況
console.log('arr['+i+']= ' + arr[i] + ' arr[' + j+']= ' + arr[j] );
if(arr[i]>arr[j]){
//一言不合就排序(對調兩個值)
let d=arr[j];
arr[j]=arr[i];
arr[i]=d;
//打印排序的狀況
console.log('arr['+i+']= ' + arr[i] + ' arr[' + j+']= ' + arr[j] + ' 交換值');
}
//打印一下變換後的數組
console.log(arr);
}
}
return arr;
}
console.log(bubbleSort([9,5,6,4,1]));

看下輸出狀況。。。數組

很清晰吧 從第二位開始每一位上的數組都和其餘數字比較,大的就冒泡(換位到前面);spa

如下是看了前端早讀課後修改的(才發現上面方法不是正宗的....)3d

---------------------------------------------------------------------------------------------------------------------------code

 1     let arr1 = [3,5,6,4,1];
 2     class arrSort{
 3         bubbleSort(arr){
 4             let [len,i,j,] = [arr.length];
 5             for (i = 0; i < len - 1; i++) {
 6                 for (j = 0; j < len - 1 - i; j++) {
 7                     console.log('arr[' + j + ']= ' + arr[j] + ' arr[' + (j + 1) + ']= ' + arr[j + 1]);
 8                     if (arr[j] > arr[j + 1]) {
 9                         let temp = arr[j + 1];
10                         arr[j + 1] = arr[j];
11                         arr[j] = temp;
12                         console.log('arr[' + j + ']= ' + arr[j] + ' arr[' + (j + 1) + ']= ' + rr[j + 1] + ' 交換值');
13                     }
14                     console.log(arr);
15                 }
16             }
17             return arr;
18         }
19     }
20     let arrSort1 = new arrSort;
21     console.log(arrSort1.bubbleSort(arr1));

 

看看輸出結果:對象

實現的思路:blog

        1.依次比較相鄰的兩個數,若是第一個比第二個小,不變。若是第一個比第二個大,調換順序。一輪下來,最後一個是最大的數排序

        2.對除了最後一個以外的數重複第一步,直到只剩一個數

 

相比之下後面的方法比較的次數少了好多...這纔是正宗的冒泡法....

 

2、選擇法排序

實現的思路:

        1.找出最小的數,和第一個交換位置

        2.在餘下的裏面找最小的數,放在第二個位置

        3.依次類推,排除順序

3、插入法排序

實現的思路:

        1.依次比較相鄰的兩個數,若是第一個比第二個小,不變。若是第一個比第二個大,調換順序。一輪下來,最後一個是最大的數

        2.對除了最後一個以外的數重複第一步,直到只剩一個數

4、快速排序

實現的思路:

        1.依次比較相鄰的兩個數,若是第一個比第二個小,不變。若是第一個比第二個大,調換順序。一輪下來,最後一個是最大的數

        2.對除了最後一個以外的數重複第一步,直到只剩一個數

 

 

5、對象數組排序

 1 function by(property) {
 2             return function (o,p) {
 3                 var a,b;
 4                 if(o && p && typeof o === 'object' && typeof p === 'object'){
 5                     //這裏是關鍵代碼 爲a,b賦值,賦值分別爲對象o、p的一個key!
 6                     a = o[property];
 7                     b = p[property];
 8 
 9                     if(a === b){
10                         return 0;
11                     }
12                     if(typeof a === typeof b){
13                         return a < b ? -1 :1;
14                     }
15                     return typeof a < typeof b ? -1 :1;
16                 }else{
17                     throw('error');
18                 }
19             }
20         }

    調用:someArray.sort(by(property));

相關文章
相關標籤/搜索