JavaScript的排序算法——選擇排序

 

選擇排序(Selection Sort)

選擇排序是一種排序算法,是一個佔用常用內存(In-place)的排序方法。時間複雜度爲O(n2)。通常情況下,在處理大型數據的時候,性能要比相似的插入排序低。選擇排序因其簡單性而著稱,並且在某些情況下性能要優於更復雜的算法,尤其是在輔助存儲空間有限的情況下。

實現思路跟冒泡排序差不多, 可以說是冒泡排序的衍生版本;

選擇排序的工作原理

每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置

然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。

以此類推,直到全部待排序的數據元素排完。

編碼實現:

第一步:先定義一個selectionSort函數,傳入需要排序的數組

function selectionSort(arr){
	
}

第二步:定義最小元素的索引和輔助交換變量的臨時變量;

function selectionSort(arr){
	var len = arr.length;
	var minIndex;  //最小元素的索引
	var temp;  //用於交換變量的臨時變量
	
	
}

 第三步:循環遍歷數組,取到最小值

function selectionSort(arr){
	var len = arr.length;
	var minIndex;  //最小元素的索引
	var temp;  //用於交換變量的臨時變量
	for(let i = 0;i<len;i++){
		minIndex = i;
		for(let j = i+1;j<len;j++){
			if(arr[j]<arr[minIndex]){
				minIndex = j;
			}
		}
		
	}
}

第四步: 交換最小值與當前元素的位置 ,最後,返回數組

function selectionSort(arr){
	var len = arr.length;
	var minIndex;  //最小元素的索引
	var temp;  //用於交換變量的臨時變量
	for(let i = 0;i<len;i++){
		minIndex = i;
		for(let j = i+1;j<len;j++){
			if(arr[j]<arr[minIndex]){
				minIndex = j;
			}
		}
		// 交換arr[i] 與最小值的位置
		temp = arr[i];
		arr[i] = arr[minIndex];
		arr[minIndex] = temp;
	}
	return arr;
}

當需要排序時,調用該函數即可:

相關閱讀

JavaScript的排序算法——冒泡排序
JavaScript的排序算法——選擇排序
JavaScript的排序算法——插入排序
JavaScript的排序算法——歸併排序
JavaScript的排序算法——快速排序

 

發佈了49 篇原創文章 · 獲贊 6 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章