private static int Partition(string [] data, int left, int right) { string pivot = data[left]; while (true) { while (TComparer.Compare(data[left], pivot) == -1) { left++; } while (TComparer.Compare(data[right], pivot) == 1) { right--; } if (left < right) { if (TComparer.Compare(data[left], data[right]) == 0) { return(right); } string temp = data[left]; data[left] = data[right]; data[right] = temp; } else { return(right); } } }
public void Sort() { string temp; string[] data = _data; for (int j = 0; j <= data.Length - 2; j++) { for (int i = 0; i <= data.Length - 2; i++) { if (TComparer.Compare(data[i], data[i + 1]) == 1) { temp = data[i + 1]; data[i + 1] = data[i]; data[i] = temp; } } } _data = data; }
private void heapify(string[] data, int n, int i) { int largest = i; int left = 2 * i + 1; int right = 2 * i + 2; if (left < n && TComparer.Compare(data[left], data[largest]) == 1) { largest = left; } if (right < n && TComparer.Compare(data[right], data[largest]) == 1) { largest = right; } if (largest != i) { string swap = data[i]; data[i] = data[largest]; data[largest] = swap; heapify(data, n, largest); } }