public static void Sink(int[] array, SinkMethod sinkMethod) { swaps = 0; comparisons = 0; sinkMethod(array, 0); maximum = array[0]; }
public static void Maxify(int[] array, SinkMethod sinkMethod) { swaps = 0; comparisons = 0; int length = array.Length; int root = length; while (root >= 0) { sinkMethod(array, root); --root; } maximum = array[0]; }
private static int TestMaxify(int[] array, int seed, SinkMethod sinkMethod, int repetitionIndex, ref long comparisonsSum, ref long swapsSum) { InitializeArray(array, seed); if (repetitionIndex == 0) { Dump(array); } Heaps.Maxify(array, sinkMethod); if (repetitionIndex == 0) { Dump(array); Console.WriteLine($"Maximum: {Heaps.maximum} Seed: {seed} Swaps: {Heaps.swaps} Comparisons: {Heaps.comparisons}", new object[0]); } comparisonsSum += Heaps.comparisons; swapsSum += Heaps.swaps; return(Heaps.maximum); }
private static int TestSink(int[] array, int seed, SinkMethod sinkMethod, int repetitionIndex, ref long comparisonsSum, ref long swapsSum) { int value = new Random(seed * 2).Next(array.Length); array[0] = value; if (repetitionIndex == 0) { Dump(array); } Heaps.Sink(array, sinkMethod); if (repetitionIndex == 0) { Dump(array); Console.WriteLine($"Maximum: {Heaps.maximum} Seed: {seed} Swaps: {Heaps.swaps} Comparisons: {Heaps.comparisons}", new object[0]); } comparisonsSum += Heaps.comparisons; swapsSum += Heaps.swaps; return(Heaps.maximum); }
public AlgorithmInformation(SinkMethod sinkMethod) { SinkMethod = sinkMethod; }