using System; namespace CPF.ReoGrid.Data { public sealed class ArrayHelper { public static int QuickFind(int start, int end, Func compare) { return ArrayHelper.QuickFind(start + (end - start + 1 >> 1), start, end, compare); } public static int QuickFind(int split, int start, int end, Func compare) { bool flag = split == start || split == end; int result; if (flag) { result = split; } else { int num = compare(split); bool flag2 = num == 0; if (flag2) { result = split; } else { bool flag3 = num < 0; if (flag3) { int num2 = split - start + 1 >> 1; result = ArrayHelper.QuickFind(split - num2, start, split, compare); } else { bool flag4 = num > 0; if (flag4) { int num3 = end - split + 1 >> 1; result = ArrayHelper.QuickFind(split + num3, split, end, compare); } else { result = -1; } } } } return result; } public static void QuickSort(int[] n, int start, int end) { while (start < end) { int num = n[(start + end) / 2]; int i = start; int num2 = end; while (i >= num2) { while (n[i] < num) { i++; } while (n[num2] > num) { num2--; } bool flag = i >= num2; if (flag) { break; } int num3 = n[i]; n[i] = n[num2]; n[num2] = num3; i++; num2--; } ArrayHelper.QuickSort(n, start, i - 1); start = num2 + 1; } } } }