選擇排序演算法
阿新 • • 發佈:2018-12-10
選擇排序原理 一串無序序列,從陣列的最左端開始向右逐個查詢比較。初始第一次操作,陣列中首元素計做基準元素,從第二個元素開始向右逐個與第一個元素進行大小比較。找到小於首元素的變數,然後記住該元素所在的位置。與第一個元素進行交換,然後繼續之前類似操作。這次初始變數將變成第二個元素。繼續向右查詢小於他的元素,找到則記錄下該元素的位置。然後進行交換位置。之後陣列中的元素依然重複該操作直至陣列中的所有變數都排序完畢。 程式碼實現原理: 函式:1.swap()函式交換倆個元素的位置 2.主函式排序功能函式selectionSort(arr) 程式碼實現原理: n個記錄的直接選擇排序可經過n-1趟直接選擇排序得到有序結果。具體演算法描述如下:
初始狀態:無序區為R[1..n],有序區為空; 第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個的新無序區; n-1趟結束,陣列有序化了。
function selectionSort(arr) {
var len = arr.length;
var minIndex, temp;
for (var i = 0; i < len - 1 ; i++) {
minIndex = i;
for (var j = i + 1; j < len; j++) {
if (arr[j] < arr[minIndex]) { // 尋找最小的數
minIndex = j; // 將最小數的索引儲存
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
演算法分析: 表現最穩定的排序演算法之一,因為無論什麼資料進去都是O(n2)的時間複雜度,所以用到它的時候,資料規模越小越好。唯一的好處可能就是不佔用額外的記憶體空間了吧。理論上講,選擇排序可能也是平時排序一般人想到的最多的排序方法了吧。