Быстрая сортировка массива
Реализация алгоритма быстрой сортировки массива, разработанный английским математиком Чарьзом Хоаром во время работы в МГУ 1960 году.
using System; using System; namespace IndustrialSoftware { public static class Arrays { public static void Swap<T>(T[] data, int i, int j) { T t = data[i]; data[i] = data[j]; data[j] = t; } public static void QuickSort<T>(T[] data) where T : IComparable<T> { if (data == null) throw new ArgumentNullException("data"); if (data.Length > 1) { lock (data.SyncRoot) { QuickSort(data, 0, data.Length - 1); } } } private static void QuickSort<T>(T[] data, int L, int R) where T : IComparable<T> { if (R - L == 1) { if (data[L].CompareTo(data[R]) == 1) Swap<T>(data, L, R); return; } int l = L, r = R, M = (R + L) >> 1; while (l <= r) { while (l < data.Length && data[l].CompareTo(data[M]) < 0) l++; while (r >= 0 && data[r].CompareTo(data[M]) > 0) r--; if (l <= r) { Swap<T>(data, l, r); if (l == M) M = r; else if (r == M) M = l; l++; r--; } } if (r - L > 0) QuickSort<T>(data, L, r); if (R - l > 0) QuickSort<T>(data, l, R); } } }