private static void Heapify(DataArray data) { for(int i = data._vector.Length / 2 - 1; i >= 0; i--) { Sink(data._vector, i, data._vector.Length); // → invariant: a[1, n] in heap order } }
static void Main(string[] args) { DataArray data = new DataArray("Merge Sort.txt"); //data.Print(); MergeSort(data); //data.PrintVector(); data.PrintVectorToFile(); Console.ReadKey(); }
private static void SortDown(DataArray data) { int[] a = data._vector; int n = a.Length; for (int i = 0; i < n; i++) { Swap(a, 0, n - i - 1); Sink(a, 0, n - i - 1); // → invariant: a[n - i + 1, n] in final position } }
static void Main(string[] args) { DataArray data = new DataArray("Counting Inversions.txt"); //data.PrintVector(); //Console.ReadKey(); long count = InvCount(data._vector); Console.WriteLine(count); Console.WriteLine("Finish!"); Console.ReadKey(); }
static void Main(string[] args) { DataArray array = new DataArray("Heap Sort.txt"); //array.Print(); //Console.WriteLine(); HeapSort(array); array.PrintVectorToFile(); //Console.WriteLine(); Console.WriteLine("Finish!"); Console.ReadKey(); }
static void Main(string[] args) { DataArray data = new DataArray("3-Way Partition.txt"); //data.Print(); //Console.WriteLine(); //_3WayPartition(data._vector, 0, data._vector.Length - 1); _3WayPartition1(data._vector, 0, data._vector.Length - 1); data.Print(); //data.PrintVectorToFile(); //Console.WriteLine(); Console.WriteLine("Finish!"); Console.ReadKey(); }
static void Main(string[] args) { DataArray data = new DataArray("2-Way Partition.txt"); //data.Print(); int j = data._vector.Length - 1; //while (j != 0) { j = _2WayPartition(data._vector, 0, j); } //_2WayPartition1(data._vector); //data.PrintVector(); data.PrintVectorToFile(); Console.ReadKey(); }
private static void MergeSort(DataArray data) { int[] aux = new int[data._vector.Length]; Sort(data._vector, aux, 0, data._vector.Length - 1); }
private static void HeapSort(DataArray data) { Heapify(data); SortDown(data); }