码迷,mamicode.com
首页 > 编程语言 > 详细

【学+原】JS里的数组排序(1)—— 智能社

时间:2016-07-13 08:04:03      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:

虽然贴了2种办法,但是思路是一致的,都是先从数组里找出最小值,一种是找到一个放进新数组; 
另一种是找到后和第i个数交换,i每次自增

主要用到2个函数:

  1. 从一个数组里找出最小值;
  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));

【学+原】JS里的数组排序(1)—— 智能社

标签:

原文地址:http://www.cnblogs.com/bluefantasy728/p/5665553.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!