Быстрая сортировка в методе, принимающем массив как параметр - 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);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.455 из 5
Похожие ответы