這裏簡單的總結一下排序算法中的4種
1、冒泡排序
2、選擇排序
3、插入排序
4、快速排序
1 冒泡排序
冒泡排序就是循環遍歷,兩兩進行比較排大小
function BubleSort(s){
for(let i = 0; i < s.length; i++){
for(let j = i; j < s.length; j++){
s[j] > s[j-1] && ( [s[j], s[j-1]]=[s[j-1], s[j]] );
}
}
}
2 選擇排序
選擇排序就是對當前遍歷點之後的數據進行對比,比當前遍歷點小的數據就進行數值交換
function SelectSort(s){
for(let i = 0; i < s.length; i++){
for(let j = i; j < s.length; j++){
s[i] > s[j] && ( [s[i], s[j]] = [s[j], s[i]]);
}
}
}
3 插入排序
插入排序就是假設當前遍歷點之前的數組已經是有序的,將當前遍歷點插入到該有序數組的合適位置
function InsertSort(s){
for(let i = 1; i < s.length; i++){
for(let j = i; j > 0; j--){
s[j] < s[j-1] && ( [s[j], s[j-1]] = [s[j-1], s[j]]);
}
}
}
4 快速排序
快速排序就是採用分治法,將數組分爲比對比節點大的數組和比對比節點小的數組,再進行遞歸處理得到最後的排序數組
function QuickSort(s){
if(s.length <= 1) return s;
let l = 0, r = s.length, curr = s.splice(0,1);
s.forEach(item=>{
item > curr ? r.push(item) : l.push(item);
})
return QuickSort(l).concat(curr, QuickSort(r));
}
這4種排序中,冒泡和插入排序是穩定的,而選擇和快速排序是不穩定的。
快速排序的詳細講解參考文章:https://blog.csdn.net/morewindows/article/details/6684558