Как отсортировать список строк без использования предопределенной функции? - PullRequest
0 голосов
/ 18 июня 2020

Я новичок в python и застрял, чтобы найти решение одной проблемы.

У меня есть список вроде ['hello', 'world', 'and', 'practice', 'makes', 'perfect', 'again'], который я хочу отсортировать без использования какой-либо заранее определенной функции.

Я много думал, но не смог решить это должным образом.

Есть ли какой-нибудь короткий и элегантный способ отсортировать такой список строк без использования заранее определенных функций.

Какой алгоритм будет лучше всего подходит для сортировки списка строк?

Спасибо.

1 Ответ

0 голосов
/ 18 июня 2020

Похоже, вы изучаете алгоритмы сортировки. Один из простейших методов сортировки - пузырьковая сортировка . По сути, он просто просматривает список и просматривает каждую соседнюю пару значений. Если они не в правильном порядке, мы меняем их местами. Затем мы продолжаем проходить по списку, пока больше не останется никаких свопов, и все готово. Это не самая эффективная сортировка, но ее очень просто закодировать и понять:

values = ['hello', 'world', 'and', 'practice', 'makes', 'perfect', 'again']

def bubblesort(values):
    '''Sort a list of values using bubblesort.'''
    sorted = False
    while not sorted:
        sorted = True
        # take a pass through every pair of values in the list
        for index in range(0, len(values)-1):
            if values[index] > values[index+1]:
                # if the left value is greater than the right value, swap them
                values[index], values[index+1] = values[index+1], values[index]
                # also, this means the list was NOT fully sorted during this pass
                sorted = False

print(f'Original: {values}')
bubblesort(values)
print(f'Sorted: {values}')

## OUTPUT ##
#  Original: ['hello', 'world', 'and', 'practice', 'makes', 'perfect', 'again']
#  Sorted: ['again', 'and', 'hello', 'makes', 'perfect', 'practice', 'world']

Есть еще много алгоритмов сортировки от до узнайте о и у каждого из них есть свои сильные и слабые стороны - некоторые быстрее других, некоторые занимают больше памяти и т. д. c. Это увлекательный материал, и стоит узнать больше о темах компьютерных наук. Но если вы разработчик, работающий над проектом, если у вас нет очень специфических требований c, вам, вероятно, следует просто использовать встроенные алгоритмы сортировки Python и двигаться дальше:

values = ['hello', 'world', 'and', 'practice', 'makes', 'perfect', 'again']

print(f'Original: {values}')
values.sort()
print(f'Sorted: {values}')

## OUTPUT ##
#  Original: ['hello', 'world', 'and', 'practice', 'makes', 'perfect', 'again']
#  Sorted: ['again', 'and', 'hello', 'makes', 'perfect', 'practice', 'world']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...