前端JS演算法之陣列排序
阿新 • • 發佈:2020-12-19
技術標籤:JS陣列排序sort氣泡排序JavaScript前端
陣列排序一直是前端面試中經常出現的問題,而大家可能經常用的就是sort
排序,所以我又總結兩種排序方式,加上sort
排序,一併寫了下來。
第一種方法:氣泡排序
邏輯步驟:
1、使用雙層for
迴圈加if
判斷
2、依次拿數組裡面的一項去跟數組裡面的每一項做比較運算
,符合判斷條件的,交換兩項的位置。
let arr = [9, 5, 1, 4, 8, 6, 2, 7, 3, 0, '2', '3'];
function sorting(a) {
// 判斷陣列是否存在,如果存在就獲得陣列長度
var arrLength = a && a.length
// 使用雙層迴圈
for(let i = 0; i < arrLength - 1; i++) {
for(let j = i + 1; j < arrLength; j++) {
// if 判斷 拿一項去跟陣列每一項比較,大於號是正序,小於號是倒序
if(a[i] > a[j]) {
// 如果符合判斷條件,使用ES6解構賦值交換位置
[a[i], a[j]] = [a[j], a[i]];
}
}
};
return a;
}
第二種方法:插入法排序
插入排序跟氣泡排序都是使用雙層for迴圈
加if
判斷,插入法排序是拿陣列的後邊一項和前面一項對比,如果符合條件就交換位置,而氣泡排序是即那陣列的前一項和後一項對比。接下來看程式碼
function sorting(a) {
var arrLength = a && a.length
for(let i = 1; i < arrLength; i++) {
for(let j = i; j > 0; j--) {
if(a[j] < a[ j - 1]) {
[a[j], a[j - 1]] = [a[j - 1], a[j]]
};
};
};
return a;
}
第三種方法:sort排序
function sorting(a) {
return a.sort((a, b)=> {
// a - b正序 b - a倒序
return a - b;
})
}
陣列排序就整理到這,大家如果有什麼其他的方法,可能留言也可以私聊,大家相互學習,共同進步。