#python #arrays
Вопрос:
У меня есть два списка номеров, например
order = [0,-1,1] array = [0,1,0,-1,0,1,1,-1]
array
всегда будет содержать только элементы order
. Задача состоит в том , чтобы отсортировать список массивов так, чтобы он находился в порядке, указанном order
, т. е. Для приведенного выше примера вывод должен быть
output -gt; [0,0,0,-1,-1,1,1,1]
Я думаю, что ясно, в чем вопрос.
Мой метод решения вышеизложенного состоит в том, чтобы создать количество каждого элемента по порядку:
count = {-1:2,0:3,1:3}
Затем просто повторите array
и замените каждый элемент в соответствии с количеством и порядком, указанными в order
:
sorting_pointer = 0 for ele in order: while count[ele]: array[sorting_pointer] = ele sorting_pointer = 1 duplicate_counter[ele] -= 1 return array
МОЙ ВОПРОС: Для последней партии кода это эквивалентно «замене» элементов? С точки зрения сложности времени и пространства?
Под «обменом» элементами я подразумеваю что-то вроде:
array[0],array[1] = array[2],array[4]
Комментарии:
1. Спасибо Дэни — есть ли какие-либо существенные различия между ними? Или их можно рассматривать как совершенно одинаковые?