JavaScriptでインデックスソート
インデックスソート必要になるたびに思い出しながら実装してるのでメモ
インデックスソートとは?
var a = [2, 3, 1];
// ↓インデックスソートする
// > [2, 0, 1] と返ってくる
// a[2] = 1
// a[0] = 2
// a[1] = 3
// ソートした場合の参照インデックスを返してくれる
と返ってくるソートです
ソースコード
function argsort(x) {
var tmp = [];
for(var i = 0; i < x.length; i += 1) {
tmp.push([i, x[i]]);
}
tmp.sort(function(a, b) {
return a[1] - b[1];
});
var idxs = [];
for(var i = 0; i < tmp.length; i += 1) {
idxs.push(tmp[i][0]);
}
return idxs;
}