2014-11-14 28 views
0

所以我知道有一个.sort()方法可以用来在JavaScript中对数组进行排序,但我正在尝试自己构建方法以供练习。我正在努力为一组数字做它。目前,我已经在一个数组中使用了5个数字,但我想让它变成动态的,以便它可以创建一个大小不一的数组。有没有一种方法可以轻松地复制这些代码,以便扩展或需要采用完全不同的方法?JavaScript构建多个临时变量

var myArray = [3,2,4,5,1]; 

function sort(array) { 
    var max = 0; 
    var mid3 = 0; 
    var mid2 = 0; 
    var mid1 = 0; 
    var min = 0; 
    var sortArr = []; 
    for (var i = 0; i < array.length; i++) { 
    if (array[i] > max) { 
     min = mid1 
     mid1 = mid2 
     mid2 = mid3 
     mid3 = max 
     max = array[i]; 
    } else if (array[i] > mid3) { 
     min = mid1 
     mid1 = mid2 
     mid2 = mid3 
     mid3 = array[i]; 
    } else if (array[i] > mid2) { 
     min = mid1 
     mid1 = mid2 
     mid2 = array[i]; 
    } else if (array[i] > mid1) { 
     min = mid1 
     mid1 = array[i]; 
    } else { 
     min = array[i] 
    } 
    } 
    sortArr.push(max, mid3, mid2, mid1, min); 
    return sortArr 
} 

console.log(sort(myArray)) 

我想建立某种变量构造的,将是这样的下面,然后通过在该功能使一些逻辑是抽象的,但不知道这是可能的。然后,您需要一些方法来构建if else语句和要更新的推送方法。我不知道是否有一些简单的解决方案,我错过了任何帮助。

function varConstruct (num) { 
    for (var i = 0; i < num; i++) { 
    "mid" + i; 
    } 
    } 
+0

myArray [“mid”+ i] ??? – Vinz243 2014-11-14 21:09:07

+4

你让太多比较。查看快速排序或合并排序 - 请参阅http://www.sorting-algorithms.com/ – 2014-11-14 21:13:23

+0

如果您想要干净地完成此操作,可能需要查看递归。 – 2014-11-14 21:26:08

回答