Рубрики
Без рубрики

Сортировка по ячейкам в Python С алгоритмом и фрагментом кода

Сортировка по ячейкам в Python используется для сортировки списков, в которых количество элементов приблизительно равно диапазону возможных значений ключей.

Автор оригинала: Team Python Pool.

Сортировка по ячейкам в Python С алгоритмом и фрагментом кода

В этой статье мы рассмотрим алгоритм сортировки, известный как pigeonhole sort в Python. Итак, что же такое сорт голубятни? Это алгоритм сортировки, широко используемый для сортировки списков, в которых количество элементов в списке приблизительно равно диапазону возможных значений ключей. Давайте теперь разберемся с сортировкой по ячейкам в деталях.

Алгоритм сортировки по ячейкам в Python:

  1. Сначала мы найдем максимальное, а также минимальное значение в массиве. Найдя максимальное и минимальное значения, мы можем легко вычислить диапазон как (max-min +1)
  2. Теперь мы создадим пустой массив, имеющий тот же размер, что и диапазон. Пространство массива – это то, почему этот массив известен как pigeonholes.
  3. Теперь мы переберем исходный массив и поместим каждый элемент в соответствующую ячейку. Ячейка элемента a[i] вычисляется как индекс a[i]-mini
  4. Наконец, в исходном массиве мы снова вставим заполненные отверстия

Иллюстрация алгоритма:

Рассмотрим массив, имеющий элементы типа [12, 16, 19, 10, 9]

<сильный>Максимум

Минимальный элемент

Таким образом, диапазон = ( 19 – 9

Теперь мы создадим массив pigeonhole с индексом от 0 до 10

Теперь, когда массив pigeonhole создан, мы поместим каждый элемент из исходного массива в соответствующую ячейку

Пример сортировки по ячейкам в Python
Пример сортировки по ячейкам в Python

Алгоритм Pigeonhole

Иллюстрация

Здесь B – это массив голубей с индексом 0-10

<В соответствующих голубиных норах мы будем заполнять элементы из исходного массива

Наконец, в исходном массиве мы снова вставим заполненные отверстия, тем самым давая сортированный массив.

Реализация алгоритма сортировки Pigeonhole в Python:

def pigeonhole_sort(a):
   (a)
   (a)
    - minimum + 1
    pigeonholes = [0] * size
    for i in a:
        pigeonholes[i - minimum]
   
    for count in range(size):
        while pigeonholes[count] > 0:
            pigeonholes[count]
            + minimum
            j
             
 
a = [12, 16, 19, 10,  9]
print("The array is :")
print(a)
print("Sorted array is :")
pigeonhole_sort(a)
print(a)

Выход:

Выход для сортировки по ячейкам

объяснение кода:

  • Сначала мы нашли максимальное и минимальное значения, и из этого мы вычислили размер массива ячеек.
  • После этого для индекса, соответствующего которому элементы присутствуют в исходном массиве, мы вставим значение 1 в массив pigeonhole.
  • И, наконец, в оригинале href=”https://en.wikipedia.org/wiki/Array_data_structure”>array, мы снова вставим заполненные отверстия, таким образом давая сортированный массив. href=”https://en.wikipedia.org/wiki/Array_data_structure”>array, мы снова вставим заполненные отверстия, таким образом давая сортированный массив.

Анализ алгоритма сортировки Pigeonhole в Python:

  • Временная сложность: O(n+K)
  • Пространственная сложность: O(n+K)

Примечание:

  • n – Размер массива
  • K – Диапазон значений

Преимущества:

  • Сортировка по ячейкам-это сортировка, основанная не на сравнении, что делает ее более быстрой в применении
  • Это стабильный алгоритм сортировки
  • Он выполняет сортировку в линейном времени

Недостатки:

  • Нелегко узнать диапазон чисел для сортировки
  • Это число может работать только с нулевыми и положительными целыми числами

Должен Читать

  • Сортировка вставки в Python [Программа, алгоритм, Пример]
  • Понимание сортировки пузырьков Python с примерами
  • Алгоритм сортировки оболочки и программа на Python
  • Понимание Сортировки прядей в Python На примере

Вывод:

В этой статье мы узнали об алгоритме pigeonhole. Его реализация в python, его преимущества, а также его недостатки. Все алгоритмы сортировки имеют свои плюсы и минусы. Если количество элементов и их диапазон одинаковы, алгоритм pigeonhole будет разумным выбором.

Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.

Счастливого Пифонирования!