您的位置:首页 > 其它

获取数组排序后的index算法实现

2015-03-01 15:56 232 查看
需求:

一个数组var arr = [4,7,2,9],排序后的新数组var newArr = [2,4,7,9]或者[9,7,4,2]

我们要得到的是排序后元数组的每一项在新数组中的位置所构成的数组:[2,4,7,9]对应[1,2,0,3]/[9,7,4,2]对应[2,1,3,0]

方案一:

Array.prototype.getIndex = function () {
var orderLength = this.length;
var temp, tp;
var c = [];
for(var l = 0; l < orderLength; l++) {
c[l] = l;
}
for(var u = 0; u < orderLength; u++) {
for (var v = 0; v < orderLength-u-1; v++){
if (this[v] > this[v+1]) {
temp = this[v];
this[v] = this[v+1];
this[v+1] = temp;
tp = c[v];
c[v] = c[v+1];
c[v+1] = tp;
}
}
}
return c;
//return this;
}
var arr = [4,7,2,9];
console.log(arr.getIndex());


方案二:

var a = [4,7,2,9];
var newArr = [];
for (var i = 0, n = a.length; i < n; ++i) {
newArr.push({
data: a[i],
index: i
})
}
newArr.sort(function (a, b) {
return a.data - b.data;
})
var index = [];
for (var i = 0, n = newArr.length; i < n; ++i) {
index.push(newArr[i].index);
}
console.log(newA);


本人愚笨只想到这两种解决方案,求更好的方案
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐