JS排序算法

這裏簡單的總結一下排序算法中的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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章