选择排序算法和理解
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
var arr = [1, 41, 12, 2, 5]
//选择排序
//a = 1, b = 41, c = 12, d = 2, e = 5
//a,b,c,d,e 五人相遇了,要站一对,从高到矮排列
//1、2、3、4、5
//其中1号位a说话了:我最矮你们谁有意见
//然后b,c,d,e不信依次和a比较,最后结果是a最矮,站最后
// => a, b, c, d, e
//然后2号位b说话了我是除了a最矮的,谁有意见
//然后c,d,e不信,依次和b比较
//刚和c一比 c就叫了我比你矮你不是除了a最矮的我才是,说罢
//就说我才是除a最矮的,谁有意见
//然后d,e不信,依次和c比较
//刚个d一比,d就叫了,你不是除a最矮的,我才是,说罢
//就说我才是除a最矮的,谁有意见
//然后e不信,和e比较
//和e比较,e承认,d比他矮,最后d是除了a之外最矮的,站a前面
// => a, d, b, c, e
//然后3号位b说话了,我是除了a,b外最矮的,谁有意见
//然后c,e不信,依次和b比较
//刚和c一比 c就叫了我比你矮你不是除了a,b最矮的我才是,说罢
//就说我才是除a,b最矮的,谁有意见
//然后e不信,e和c比较
//刚个e一比,e就叫了,你不是除a,d最矮的,我才是
//最后e是除a,b最矮的站a,b前面
// => a, d, e, b, c
//然后4号位b说话了,我是除了a,b,c外最矮的,谁有意见
//然后c不信,和b比较
//刚和c一比 c就叫了我比你矮你不是除了a,b,e最矮的我才是
//最后c是除a,b,e外最矮的,站a,b,e前面
// => a, d, e, c, b
//最后5号位的b说话了:没人和我比了,唉!我是最高的,说罢站a, b, e, c前面
// => a, d, e, c, b
function selectionSort(arr){
var len = arr.length,min;
for (i=0; i < len; i++){
// 出来出声说我是最矮的那个
min = i;
// 比较其他人是否比他矮
for (j=i+1; j < len; j++){
if (arr[j] < arr[min]){ min = j; }
}
// 如果其他人比它矮,换成那个矮的出声
if (i != min){
var temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
} return arr;
//返回一个有矮到高的列(数组)
}
console.log(selectionSort(arr));
</script>
</head>
<body>
</body>
</html>
//结果:[1, 2, 5, 12, 41]