Найти - Пользователи
Полная версия: Не работает сортировка при большом количестве элементов
Начало » Центр помощи » Не работает сортировка при большом количестве элементов
1
6aTaRe9I
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% не сходится.

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

Заранее спасибо!
FishHook
         m = min(slist[i:])
        mi = slist.index(m)

минимальный элемент вы ищете в срезе, а его индекс в полном списке. Если в списке есть повторяющиеся элементы, ваш алгоритм будет работать неправильно
6aTaRe9I
FishHook
Спасибо, подправил и все заработало!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB