java 排序 下标_获得排序后的下标与原始下标关系

java写着写着,吐了,后来想用 js 写,虽然比java还要贫瘠,但至少可以随性些。

///

/// Map orignal indexes to sorted indexes, eg: SI2I([2,5,9,4,6,7])=[0(0,2),3(1,4),1(2,5),4(3,6),5(4,7),2(5,9)].

///

///

public static int[] SI2I(this List s, Func by) {

var r = new List();

var t = new List(s);

while (r.Count < s.Count) {

var f = 0;

var v = by(t[0]);

for (var i = 1; i < t.Count; i++) {

var n = by(t[i]);

if (n < v) {

f = i;

v = n;

}

}

var ts = t[f];

var ii = s.IndexOf(ts);

while (r.Contains(ii)) {

ii = s.IndexOf(ts, ii + 1);

}

r.Add(ii);

t.RemoveAt(f);

}

return r.ToArray();

}

///

/// Map sorted indexes to orignal indexes, see .

///

public static int[] I2SI(this List s, Func by) {

return SI2I(SI2I(s, by).ToList(), i => i);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值