常規排序算法:選擇排序

表現最穩定的排序算法之一(這個穩定不是指算法層面上的穩定哈),由於不管什麼數據進去都是O(n²)的時間複雜度…..因此用到它的時候,數據規模越小越好。惟一的好處可能就是不佔用額外的內存空間了吧。理論上講,選擇排序可能也是平時排序通常人想到的最多的排序方法了吧。javascript

(1)算法簡介

選擇排序(Selection-sort)是一種簡單直觀的排序算法。它的工做原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,而後,再從剩餘未排序元素中繼續尋找最小(大)元素,而後放到已排序序列的末尾。以此類推,直到全部元素均排序完畢。java

(2)算法描述和實現

n個記錄的直接選擇排序可通過n-1趟直接選擇排序獲得有序結果。具體算法描述以下:算法

  • <1>.初始狀態:無序區爲R[1..n],有序區爲空;數組

  • <2>.第i趟排序(i=1,2,3…n-1)開始時,當前有序區和無序區分別爲R[1..i-1]和R(i..n)。該趟排序從當前無序區中-選出關鍵字最小的記錄 R[k],將它與無序區的第1個記錄R交換,使R[1..i]和R[i+1..n)分別變爲記錄個數增長1個的新有序區和記錄個數減小1個的新無序區;blog

  • <3>.n-1趟結束,數組有序化了。排序

代碼實現:索引

function selectionSort(arr) {
	var len = arr.length;
	var min;
	for(var i =0;i<len-1;i++) {
		min=i;
		for(var j=i+1;j<len;j++) {
			if(arr[min]>arr[j]){
				min=j;//找到最小值索引
			}
		}
		tep=arr[min];
		arr[min]=arr[i];
		arr[i]=tep
	}	
	return arr;
}

  運行:ip

console.time('ss')
console.log(sectionSort([3,4,51,22,111]))
console.timeEnd('ss')

  結果:內存

相關文章
相關標籤/搜索