如果我有以下数组:[5, 1, -7, 3, 6, 8, 0, -1, -3]
通过排序我得到 [-7, -3, -1, 0, 1, 3, 5, 6, 8]
很好,但我想要的是排序后数组的键。 这个:[2, 8, 7, 6, 1, 3, 0, 4, 5]
我尝试了以下使用插入排序的方法,但这当然是错误的。
var arr = [5, 1, -7, 3, 6, 8, 0, -1, -3];
keys = new Array(arr.length);
for(var j = 1; j < arr.length; j++) {
key = arr[j];
var i = j - 1;
while(i >= 0 && arr[i] > key) {
keys[i+1] = i;
i--;
}
arr[i+1] = key;
keys[i+1] = j;
}
我走在正确的轨道上吗?你能帮我吗:)
最佳答案
试试本页描述的那种东西
http://www.webdotdev.com/nvd/content/view/878/ .
基本上,使数组中的每个项目成为具有两个属性(排序键及其在数组中的索引)的对象,然后按键对它们进行排序。
关于javascript - 如何获取数组中已排序值的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6543201/