标签:
虽然贴了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