Widestrip
@Widestrip
кодер-самоучка

Python. Как отсортировать двухмерный список?

Требуется отсортировать двухмерный список чисел размером __COLS x __ROWS по возрастанию всех элементов не разворачивая его в одномерный. Вариант с разворачиванием сделан и работает.
Функция для этой цели адекватно работает в C++ и в Java, но в Питоне, где нумерация тоже с 0 выдает ошибку индекса.
def swap_sort(a):
    for k in range(__ROWS * __COLS - 1):
        for i in range(__ROWS):
            for j in range(__COLS):
                if i >= __ROWS - 1 and j >= __COLS - 1:
                    continue
                if a[i][j] > a[i][j + 1]:
                    a[i][j], a[i][j + 1] = a[i][j + 1], a[i][j]

Что я делаю не так?
Заранее спасибо.
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Если j == __COLS - 1, но i < __ROWS - 1, то ты попытаешься обратиться к элементу a[i][__COLS - 1 + 1], т.е. a[i][__COLS]. Я полагаю, в этом и дело.
Не знаю насчёт Java, но в C++ вполне возможно, что у тебя строки матрицы лежат в памяти подряд, так что ты фактически нечаянно обращаешься к a[i+1][0], тем самым корректно "склеивая" строки.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@PavelMos
if i >= __ROWS - 1 and j >= __COLS - 1:
                    continue

бессмысленная инструкция, ничего не меняет и код после неё будет выполняться в любом случае
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы