Алгоритм быстрой сортировки в C сортировке всего по двум числам - PullRequest
0 голосов
/ 10 января 2020

Я новичок в алгоритмах, поэтому я пытаюсь понять все возможные ситуации. Последнее, что я сделал, - поработал с алгоритмом QuickSort, сортирующим целые числа с помощью одного центра. Мой вопрос: что происходит, когда мне нужно отсортировать массив только с двумя целыми числами? Например, arr[2]={4,2}. Я знаю, что алгоритм работает, но я не уверен, как это происходит. Я не нашел никакой анимации только для 2 чисел, поэтому, пожалуйста, кто-нибудь может объяснить мне, что происходит шаг за шагом в этой ситуации?

Большое спасибо! Кроме того, я извиняюсь, если это глупый вопрос sh, но я не могу понять это. Хорошего дня, ребята!

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Вы выполняете сортировку с двумя элементами, как с любым общим c размером списка:

  1. Выберите опору. См. https://en.wikipedia.org/wiki/Quicksort о методах выбора точки разворота. Например, pivot - это самый левый элемент 4.
  2. . Разбиение массива на две части в зависимости от pivot:
    • 4 < 4 - false. Правый список.
    • 2 < 4 верно. Список левой руки.
  3. Сортировка обоих списков:
    • Список левой руки {2} уже отсортирован
    • Список правой руки {4} уже отсортирован
  4. Результат список слева плюс список справа : {2, 4}
0 голосов
/ 10 января 2020

Ответ зависит от вашего базового варианта. Во многих реализациях Academi c базовыми вариантами являются пустой массив или массив с одним элементом. Это означает, что массив с двумя элементами обрабатывается так же, как массив с 1000 элементами: выберите стержень, разделите массив на два подмассива, а затем выполните рекурсивный вызов двух подмассивов.

В качестве альтернативы, вы можете обрабатывать массив из 2 элементов как базовый случай и сортировать его напрямую.

...