2017-02-19 4 views
1
n = int(input("Enter no of elements ")) 
A = [] 

for i in range(n): 
    A.append(input()) 

for i in range(len(A)): 
    min_idx = i 
    for j in range(i + 1, len(A)): 
     if A[min_idx] > A[j]: 
      min_idx = j 
A[i], A[min_idx] = A[min_idx], A[i] 

print("Sorted array") 
for i in range(len(A)): 
    print(A[i]) 

Ввод пробы:Как отладить эту логическую ошибку в выводе сортировки сортировки?

Enter no of elements 4 
11 
55 
22 
3 

Выход:

Sorted array 
11 
22 
3 
55 

Выходной сигнал имеет один элемент, оставшийся в несортированных положении. Что не так с кодом?

ответ

2

У вас ошибка установки отступов:

Сортировка Код:

A = [11, 55, 22, 3] 
for i in range(len(A)): 
    min_idx = i 
    for j in range(i + 1, len(A)): 
     if A[min_idx] > A[j]: 
      min_idx = j 
    A[i], A[min_idx] = A[min_idx], A[i] # <== this line was not indented enough 

Выходной код:

print("Sorted array") 
for i in range(len(A)): 
    print(A[i]) 

производит:

Sorted array 
3 
11 
22 
55 

Но, Python прекрасна:

Python имеет много инструментов для такого рода вещи, настоятельно рекомендуем использовать их. Это даст такой же результат, как и весь приведенный выше код:

A = [11, 55, 22, 3] 
print("Sorted array") 
for number in sorted(A): 
    print(number) 

Это демонстрирует две вещи.

  1. Итерации в самом списке, здесь вам не нужны индексы.
  2. Позвольте Python сортировать его для вас.
Смежные вопросы