public void Evaluate(int SpreadMax) { //List<double> result = new List<double>(); IComparer <T> comparer; // = Comparer<T>.Default; comparer = this.FComparer[0] == null ? Comparer <T> .Default : FComparer[0]; SliceSortComparer <T, IComparer <T> > ssc = new SliceSortComparer <T, IComparer <T> >(comparer); FOutput.SliceCount = FInput.SliceCount; FFormer.SliceCount = FInput.SliceCount; int cnt = 0; for (int i = 0; i < FInput.SliceCount; i++) { List <SliceSortHolder <T> > sort = new List <SliceSortHolder <T> >(); for (int j = 0; j < FInput[i].SliceCount; j++) { SliceSortHolder <T> holder = new SliceSortHolder <T>(); holder.FormerSlice = cnt; holder.Item = FInput[i][j]; sort.Add(holder); cnt++; cnt = cnt == SpreadMax ? 0 : cnt; } sort.Sort(ssc); var items = from holder in sort select holder.Item; var slice = from holder in sort select holder.FormerSlice; FOutput[i] = new Spread <T>(items.ToList()); FFormer[i] = new Spread <int>(slice.ToList()); } }
public int Compare(SliceSortHolder <T> x, SliceSortHolder <T> y) { return(comparer.Compare(x.Item, y.Item)); }