Создание нерекурсивного быстрого метода сортировки - C#
Формулировка задачи:
Ребят, последний этаап... можете составить простенький алгоритм быстрой нерекурсивной сортировки
Решение задачи: «Создание нерекурсивного быстрого метода сортировки»
textual
Листинг программы
static void QuickSort<T>(T[] array) where T : IComparable<T> { var comparer = Comparer<T>.Default; var stack = new Stack<ArraySegment<T>>(); stack.Push(new ArraySegment<T>(array, 0, array.Length)); while (stack.Count > 0) { var segment = stack.Pop(); int left = segment.Offset; int right = left + segment.Count - 1; array = segment.Array; var pivot = array[left + (right - left) / 2]; while (left <= right) { while (comparer.Compare(array[left], pivot) < 0) left++; while (comparer.Compare(array[right], pivot) > 0) right--; if (left <= right) { var tmp = array[left]; array[left++] = array[right]; array[right--] = tmp; } } if (left < segment.Offset + segment.Count - 1) stack.Push(new ArraySegment<T>(array, left, segment.Offset + segment.Count - left)); if (segment.Offset < left - 1) stack.Push(new ArraySegment<T>(array, segment.Offset, left - segment.Offset)); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д