Рубрики

Программа Python для сортировки голубей

Сортировка по Голубому отверстию — это алгоритм сортировки, который подходит для сортировки списков элементов, в которых количество элементов и число возможных ключевых значений примерно одинаковы.
Требуется время O (+), где n — количество элементов во входном массиве, а / / Range / — количество возможных значений в массиве.

Работа алгоритма:

  1. Найти минимальные и максимальные значения в массиве. Пусть минимальные и максимальные значения будут / 'min /' и / 'max /' соответственно. Также найдите диапазон как / 'max-min-1 /'.
  2. Создайте массив изначально пустых «ямок для сообщений» того же размера, что и диапазон.
  3. Посетите каждый элемент массива, а затем поместите каждый элемент в свое отверстие. Элемент arr [i] помещается в отверстие по индексу arr [i] — мин.
  4. Запустите цикл по всему массиву голубиных отверстий по порядку и поместите элементы из непустых отверстий обратно в исходный массив.

# Программа Python для реализации Pigeonhole Sort * /

  
# исходный код: " https://en.wikibooks.org/wiki/
# Algorithm_Implementation / Sorting / Pigeonhole_sort "

def pigeonhole_sort(a):

    # размер диапазона значений в списке

    # (т.е. количество нужных ямок)

    my_min = min(a)

    my_max = max(a)

    size = my_max - my_min + 1

  

    # наш список ям

    holes = [0] * size

  

    # Заполните голубиные отверстия.

    for x in a:

        assert type(x) is int, "integers only please"

        holes[x - my_min] += 1

  

    # Поместить элементы обратно в массив по порядку.

    i = 0

    for count in range(size):

        while holes[count] > 0:

            holes[count] -= 1

            a[i] = count + my_min

            i += 1

              

  

a = [8, 3, 2, 7, 4, 6, 8]

print("Sorted order is : ", end =" ")

  
pigeonhole_sort(a)

          

for i in range(0, len(a)):

    print(a[i], end =" ")

     

Выход:

Рекомендуемые посты:

Программа Python для сортировки голубей

0.00 (0%) 0 votes