虽然贴了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));

浙公网安备 33010602011771号