Как отсортировать по минимуму с помощью итерационной функции? - PullRequest
1 голос
/ 24 октября 2011

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

  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, но что я должен поставить для минимума?

Ответы [ 2 ]

1 голос
/ 24 октября 2011

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

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

0 голосов
/ 24 октября 2011

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

...
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
...
...