#python #arrays #sorting #for-loop
#python #массивы #сортировка #for-цикл
Вопрос:
Это мой исходный массив: a = [0, 4, 7, 8, 1, 3, 5, 2, 6]
и это то, что он печатает: [0, 4, 7, 0, 0, 0, 5, 0, 0]
for i in a:
pos = i
min = a[i]
for j in a:
if a[j] < min:
min = a[j]
pos = j
a[pos] = a[i]
a[i] = min
print(a)
Комментарии:
1. Вы путаете значения списка с индексами списка, что возможно только потому, что все значения являются допустимыми индексами для списка. Если вы убедились, что это неверно (например, добавив 10 к каждому значению в вашем списке), то любая такая путаница вызовет исключение прямо в точке проблемы, а не позволит бессмысленным результатам сохраняться до конца кода.
Ответ №1:
Поскольку @’Lee Jun Wei’ не похоже, что ваш алгоритм правильный. Но может быть несколько других вещей, на которые следует обратить внимание.
Эти две строки выглядят не так.
for i in a:
for j in a:
i и j принимают значение элементов a
, а не значения индекса. Я думаю, вы имеете в виду
for i in range(len(a)):
Причина, по которой вы получаете нули, заключается в том, что min инициализируется значением 0. Обратите внимание, что он равен нулю не из-за индекса, а потому, что 0 является первым значением в массиве. Как только min равно нулю, что является наименьшим значением в массиве в этой строке
if a[j] < min:
Никогда не может быть правдой. Итак, эта строка
a[i] = min
Устанавливает все в ноль. Каждый элемент не равен нулю, хотя бы потому, что [i] не является последовательным. Он перескакивает, потому что i — это значение элемента, а не индекс.
Ответ №2:
Хм, какой алгоритм сортировки вы пытаетесь реализовать? Если то, что вы пытаетесь сделать, это пузырьковая сортировка, это должно быть примерно так:
a = [0, 4, 7, 8, 1, 3, 5, 2, 6]
n=len(a)
for i in range(n):
for j in range(n-1):
if a[j 1] < a[j]:
min = a[j 1]
a[j 1] = a[j]
a[j] = min
print(a)
Комментарии:
1. Я собирался выполнить сортировку по выбору, но мне не хватало части n = leng
Ответ №3:
Вы не объяснили, что именно вы хотите, но если вы хотите отсортировать свой массив, например, с 45312 по 12345 …
print(sorted(mylist))
a=sorted(mylist)# store in a variable