1. 程式人生 > >排序算法-交換排序(javascript)

排序算法-交換排序(javascript)

快速排序 ava 排序 -i 最壞情況 span 逆序 記錄 進行

思想:兩兩比較,一旦發現不滿足次序要求時進行交換,知道整個序列滿足排序要求。

典型:冒泡排序與快速排序。

冒泡排序

思想:比較相鄰兩個,逆序就交換,每次排序將最大的‘下沈’或最小的‘上浮’。

function bubbleSort(arr){
	const len = arr.length;
	let temp = 0;
	for(let i=0;i<len-1;i++){
		for(let j=0;j<len-i-1;j++){
			if(arr[j]>arr[j+1]){
				temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
	return arr;
}

時間復雜度:

最好情況:正序。只需要一趟排序,進行n-1次比較,不移動記錄。

最壞情況:逆序。只要n-1趟排序,比較次數為n^2/2,移動次數3n^2/2。

所以時間復雜度為O(n^2)

空間復雜度:

只在兩個記錄交換位置時需要一個輔助空間做暫存記錄,所以空間復雜度為O(1)

特點:

1、是穩定排序。

2、可用於鏈式存儲結構。

3、移動記錄次數較多,算法平均時間性能比直接插入排序差。當初始記錄無序,n較大時,此算法不適合。

快速排序

戳:Here

排序算法-交換排序(javascript)