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


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

     java 版在 http://www.cnblogs.com/ly45/p/6221091.html 里,方法名是:sortIndexes。

        /// <summary>
        /// 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)].
        /// </summary>
        /// <returns></returns>
        public static int[] SI2I<T>(this List<T> s, Func<T, int> by) {
            var r = new List<int>();
            var t = new List<T>(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();
        }


        /// <summary>
        /// Map sorted indexes to orignal indexes, see <see cref="SI2I{T}(List{T}, Func{T, int})"/>.
        /// </summary>
        public static int[] I2SI<T>(this List<T> s, Func<T, int> by) {
            return SI2I(SI2I(s, by).ToList(), i => i);
        }
    }

  • 相关阅读:
    递归
    HDU_oj_2041 超级楼梯
    树与森林——树与森林的遍历
    HUD_oj_2040 亲和数
    HDU_oj_2039 判定三角形
    HDU_oj_2037 今年暑假不AC
    多边形面积
    HDU_oj_2036 改革春风吹满地(多边形面积)
    【转发】【composer】composer 命令行介绍
    【chm】【windows】win7下chm打开不显示内容
  • 原文地址:https://www.cnblogs.com/ly45/p/6158154.html
Copyright © 2020-2023  润新知