Как мне отсортировать по минимуму с помощью итеративной функции?

#python #algorithm #min

#python #алгоритм #минимум

Вопрос:

Мой учитель хочет, чтобы я выполнил алгоритм сортировки в порядке возрастания, но используя минимальное число в списке и помещая его в начало. Я прочитал файл чисел, и пока у меня есть:

   def findMin(ls, n):
        m = 0
        for i in range(1, n):        #n is length
                if ls[i]<ls[m]:
                        m = i
        return m


  def sortlist(ls,n):
        if n == 1:
                return
        m = findMin(ls,n)
        ls.insert(0,m)
        ls.remove(m)
        sortlist(ls, n)
  

Я перепробовал несколько методов и не могу заставить его работать. Я пытался поместить минимальное число в начало, а затем вычеркнуть его из списка, чтобы функция не учитывала его в длине. Я знаю, что если бы я сортировал по максимуму, я бы поставил n-1, но что мне поставить для минимума?

Ответ №1:

Из вашего описания я сделал вывод, что ваш учитель хочет, чтобы вы реализовали алгоритм сортировки по выбору. Возможно, вы захотите взглянуть на это.

В этом алгоритме вы меняете наименьшее число местами с текущей позицией. Изначально текущая позиция находится в начале списка, и она смещается при замене значений.

Ответ №2:

Это пузырьковая сортировка:

 ...
for i in range(0, n-1):
    for j in range(i   1, n):
        if ls[j] < ls[i]:
            temp = ls[i]
            ls[i] = ls[j]
            ls[j] = temp
...