Работа над внедрением этого алгоритма с использованием Python. Я думал, что моя логика в порядке, но, видимо, не так, как Питон жалуется. Цикл while вызывает проблемы. Если я удалю, что он работает так, как ожидалось, но, очевидно, не сортирует весь список. Мой мыслительный процесс -> Использовать линейный поиск, чтобы найти наименьшее число -> Добавить новый номер в список -> Удалить этот номер из текущего списка -> Повторить цикл через тот же список (но с наименьшим номером) снова -> Повторить процесс пока мы не перечислили весь список «х» несколько раз. «x» равно длине списка. Проблема, с которой я сталкиваюсь, заключается в том, что список никогда не обновляется каждый раз, когда я запускаю цикл for? Я продолжаю получать ошибку Line 21: ValueError: list.index(x): x not in list
. Даже если «x» находится в списке. Любая идея относительно того, что я делаю неправильно?Алгоритм выбора сортировки Python
"""
Selection sort algorithm.
"""
import random
ls = []
max_number = 10
while len(ls) < max_number:
ls.append(random.randint(1,101))
print ls
def selection_sort(items_to_sort):
smallest_number = items_to_sort[0]
current_number = 0
sorted_items = []
item_len = len(items_to_sort)
while item_len > 0:
for item in items_to_sort[:]:
if item < smallest_number:
smallest_number = item
items_to_sort.pop(items_to_sort.index(smallest_number))
sorted_items.append(smallest_number)
item_len -= 1
return sorted_items
print selection_sort(ls)
да у не в порядке, если он не повторно инициализировать smallst_number, он может не найти меньшее число, которое меньше, чем в прошлом мельчайший число ... – Acepcs
Fantastic. Вы - Бог среди людей. Спасибо, сэр. – terratunaz
Рад, что я мог бы помочь, если бы этот ответ помог вам, отметьте его как принятый. :) – ctj232