选择排序
原理
找到数组中最小的元素,与数组第一位交换位置,在剩下的数组中找到最小的元素,与数组第二位交换位置,依此类推。
代码
function selectionSort(arr) {
var minIndex, temp
for(var i=0; i<arr.length; i++){
minIndex= i
for(var j=i+1; j<arr.length; j++){
if(arr[minIndex] > arr[j])
minIndex = j
}
temp = arr[i]
arr[i] = arr[minIndex]
arr[minIndex] = temp
}
return arr
}
详细讲解
i=0:
- 将 5 定为最小值
- 比较 5 和 12,后者比前者大,故不做操作
- 比较 5 和 8, 后者比前者大,故不做操作
- 比较 5 和 20, 后者比前者大,故不做操作
- 比较 5 和 9,后者比前者大,故不做操作
- 比较 5 和 15,后者比前者大,故不做操作
- 比较 5 和 2,后者比前者小,故将 2 定为最小值
- 比较 2 和 16,后者比前者大,故不做操作
- 将 5 和 2 调换位置
i=1:
- 将 12 定为最小值
- 比较 12 和 8,后者比前者小,故将 8 定为最小值
- 比较 8 和 20 ,后者比前者大,故不做操作
- 比较 8 和 9,后者比前者大,故不做操作
- 比较 8 和 15,后者比前者大,故不做操作
- 比较 8 和 5,后者比前者小,故将 5 定为最小值
- 比较 5 和 16,后者比前者大,故不做操作
- 将 5 和 12 调换位置
…
依此类推,直到比较完为止,得到最后的排序。