快速分配时保持id轨道的简便方法

时间:2014-01-09 11:18:11

标签: javascript sorting quicksort

我有一个点数组,与我的dataID数组匹配。

     points = [[2,3.5], [1,2.7], [5,2.21], [2,351]];
     dataID = [1, 2, 3, 4];

快速排序功能,在javaScript中,我使用的是: (使用我自己的比较函数,比较X然后Y,并且有效)

    quicksortbyXthenY: function(array){
    if(array.length <= 1) return array;
    var pivot = array.splice(Math.round(array.length/2),1)[0];
    var lower = greater = [];
    jQuery.each(array, function() {
        if(compare(this, pivot)>=0){
            lower.push(this);
        }else{
            greater.push(this); 
        }
    });
    return (quicksortbyXthenY(lower).concat([pivot])).concat(quicksortbyXthenY(greater));

我需要知道点的新顺序,即与新的点顺序匹配的dataID的更新数组。

实现此目的的最简单方法是什么?

1 个答案:

答案 0 :(得分:1)

  

我需要知道点的新顺序,即与新的点顺序匹配的dataID的更新数组。

为数组赋予它们的ID,然后对它们进行排序,然后从已排序的数组中提取id:

for (var i=0; i<points.length; i++)
    points[i].dataID = dataIDs[i];
points.sort(compare);
for (var i=0; i<points.length; i++)
    dataIDs[i] = points[i].dataID;