标签:
虽然贴了2种办法,但是思路是一致的,都是先从数组里找出最小值,一种是找到一个放进新数组;
另一种是找到后和第i个数交换,i每次自增
主要用到2个函数:
function findMin(arr,start){ //第二个参数是标明从第几位开始找
var n = arr[start];
var index = 0;
for (var i=start; i<arr.length; i++) {
if(arr[i]<=n){
n = arr[i];
index = i;
}
}
return index;
}
function findMin2(arr){ //这个默认从第0位开始找
var n = arr[0];
var index = 0;
for (var i=0; i<arr.length; i++) {
if(arr[i]<=n){
n = arr[i];
index = i;
}
}
return index;
}
var arr = [3,5,1,8,39,4];
//alert(findMin(arr,3));
//方法一,先找最小值,跟第一个换位置,再找第二小,和第二位对换位置,一次类推
function mySort2(arr){
var mid = 0;
for (var i=0; i<arr.length; i++) {
mid = arr[i];
arr[i] = arr[findMin(arr,i)];
arr[findMin(arr,i)] = mid;
}
return arr;
}
//alert(mySort2(arr));
//方法二:定义一个新数组,每次循环的时候找到最小值,把这个最小值push到新数组里,再把这个数从原数组中删除。
function mySort3(arr){
var newArr = [];
for (var i=0; i<arr.length; i++) {
newArr.push(arr[findMin2(arr)]); //这个findMin2是不用传第二个参数的
arr.splice(findMin2(arr),1);
i--;
}
return newArr;
}
alert(mySort3(arr));
标签:
原文地址:http://www.cnblogs.com/bluefantasy728/p/5665553.html