static void heapSort(MyFileList arr, int n) { for (int i = n / 2 - 1; i >= 0; i--) { heapify(arr, n, i); } for (int i = n - 1; i >= 0; i--) { arr.Swap(0, arr.Get(0), i, arr.Get(i)); heapify(arr, i, 0); } }
static void heapify(MyFileList arr, int n, int i) { int largest = i; int left = 2 * i + 1; int right = 2 * i + 2; if (left < n && arr.Get(left).CompareTo(arr.Get(largest)) > 0) { largest = left; } if (right < n && arr.Get(right).CompareTo(arr.Get(largest)) > 0) { largest = right; } if (largest != i) { arr.Swap(i, arr.Get(i), largest, arr.Get(largest)); heapify(arr, n, largest); } }