Быстрая сортировка в методе, принимающем массив как параметр - C#
Формулировка задачи:
Привет! Ребята, помогите плз. Напишите быструю сортировку, только так, чтобы
процедура принимала только массив и все!!!
QuickSort (int[] mass)
{
// ?????
}Решение задачи: «Быстрая сортировка в методе, принимающем массив как параметр»
textual
Листинг программы
void swap(int[] arr, int i0, int i1) {
int c = arr[i1];
arr[i1] = arr[i0];
arr[i0] = c;
}
void Quick(int[] arr) {
int @base, left, right, i, j;
@base = left = right = i = j = 0;
Stack<int> stack = new Stack<int>();
stack.Push(arr.Length - 1);
stack.Push(0);
do {
left = stack.Pop();
right = stack.Pop();
if ((right - left) == 1 && arr[left] > arr[right]) {
swap(arr, left, right);
} else {
@base = arr[(left + right) / 2];
i = left;
j = right;
do {
while(@base > arr[i])
++i;
while(arr[j] > @base)
--j;
if (i <= j) {
swap(arr, i++, j--);
}
} while (i <= j);
}
if (left < j) {
stack.Push(j);
stack.Push(left);
}
if (i < right) {
stack.Push(right);
stack.Push(i);
}
} while(stack.Count != 0);
}