Beispiel #1
0
        public static SortResult Sort(this ISorter sorter, ISortable sortable)
        {
            var stageUse = new bool[sorter.StageCount];
            var curPerm  = sortable.GetPermutation();

            for (var i = 0; i < sorter.StageCount; i++)
            {
                var res = sorter[i].Sort(curPerm);
                stageUse[i] = res.Item1;
                curPerm     = res.Item2;
            }

            var ssq = Math.Sqrt(curPerm.SortednessSq());

            return(new SortResult(
                       sorter: sorter,
                       sortedness: ssq,
                       stageUse: stageUse,
                       sortable: sortable,
                       result: curPerm));
        }