Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 8, 2020 12:36:14

6aTaRe9I
Зарегистрирован: 2020-01-08
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает сортировка при большом количестве элементов

Windows 10
Python 3.7.4 64b
Задача: нужно отсортировать по возрастанию список, состоящий из рациональных чисел
Моя реализация

 import random
def sort_min(slist):
    for i in range(0, len(slist)):
        m = min(slist[i:])
        mi = slist.index(m)
        slist[mi], slist[i] = slist[i], slist[mi]
    return slist           
limit = int(input())
items = []
while (len(items) < limit): items.append(round(random.uniform(0, 1000), 2))
internal_sort_result = sorted(items)
my_sort_result = sort_min(items)
print(internal_sort_result == my_sort_result)
# print(my_sort_result)

При количестве элементов 100, как правило сортировка сходится с встроенной. При 300, в 80% сходится. А вот при 1000 элементов, 100% не сходится.

Хотелось бы понять почему так, что я не учел?

Заранее спасибо!

Отредактировано 6aTaRe9I (Янв. 8, 2020 12:36:45)

Офлайн

#2 Янв. 8, 2020 12:46:01

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не работает сортировка при большом количестве элементов

         m = min(slist[i:])
        mi = slist.index(m)

минимальный элемент вы ищете в срезе, а его индекс в полном списке. Если в списке есть повторяющиеся элементы, ваш алгоритм будет работать неправильно



Офлайн

#3 Янв. 8, 2020 12:56:40

6aTaRe9I
Зарегистрирован: 2020-01-08
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает сортировка при большом количестве элементов

FishHook
Спасибо, подправил и все заработало!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version