原理:遍历数组,从第一个开始,将其与剩余的元素进行比较,记录最小的元素及其所在的位置,结束后,将其与应该放到的位置上的元素对调,直到完成排序。
借用网上的动图直观的看下:
思想:两个循环,外循环记录位置及进行最后的交换,内循环进行比较及确定最小的元素。
上代码:
/** * @param {Object} array 需要排序的数组 */ function selectSort(array){ var len = array.length; //数组的长度 for(var i = 0; i < len;i++){ var min = array[i]; //定义最小的数字 var param; //过度元素 var index = i; //最小的数字的位置 for(var j = i+1;j < len;j++){ if(min > array[j]){ //碰到更小的记录位置,及其值 min = array[j]; index = j; } } param = array[i]; //交换位置 array[i] = min; array[index] = param; } return array; } var arr = [11,2,3,5,7,1,4,6,15,5,2,7,9,10,15,9,17,12]; console.log("原数据:"+arr); console.log("排序后:"+selectSort(arr));
力求精简,有错指出,谢谢。