这里简单的总结一下排序算法中的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