JS实现选择排序
选择排序,原理就是每一次从待排序的数据中选出最小(大)的元素,将他放在序列的起始位置,直到排完整个序列。
来看选择排序的js实现方式:
function selectionSort(arr) {
var len = arr.length,
min,
temp;
for (var i = 0; i < len - 1; ++i) {
min = i;
for (var j = i + 1; j < len; ++j) {
if (arr[j] < arr[min]) {
min = j;
}
}
temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
return arr;
}
例如,有以下数值[3, 2,6,8, 1] 第一次排序,首先选中第一个元素3(其实是记住他的下标0),然后将他依次与后面的数据比较,因为2<3,所以此时最小值下标min被置为1,6>2 pass,8>2 pass,1<2 min被改为4,循环结束,然后将4下标的值放到数组最前(最小值)。
第二次排序,此时数组是[1, 2, 6, 8, 3],选中第二个元素2(下标1),2<6 pass,2<8 pass,2<3 pass,循环结束,将1下标放到数组第二个位置。
第三次排序,此时数组是[1, 2, 6, 8, 3],选中第三个元素6(下标2),6<8 pass,6>3 min置为4,循环结束,将4下标与下标2的值互换。
第四次排序,此时数组是[1, 2, 3, 8, 6],选中第四个元素8(下表3),8>6 min置为4,循环结束,将4下标与下标3的值互换,得到数组[1, 2, 3, 6, 8],排序结束,得到所需的数组。