0

私は、単語のリストをバブルソートするコードを探しているpython imが初めてです。

mylist = [12, 5, 13, 8, 9, 65]

def bubble(badList):
    length = len(badList) - 1
    unsorted = True

    while unsorted:
        for element in range(0,length):
            unsorted = False
            if badList[element] > badList[element + 1]:
                hold = badList[element + 1]
                badList[element + 1] = badList[element]
                badList[element] = hold
                print badList
            else:
                unsorted = True

print bubble(mylist)

このコードは数字でそれを行います。単語で行うコードが必要です。ありがとう

4

3 に答える 3

1

Python の優れた点の 1 つは、等値演算子と比較演算子が、数値と同じように文字列に対して機能することです。たとえば、2 つの数値が同じであることを比較するにはどうすればよいでしょうか。

7 == 7 # true!

2弦はどうですか?

"Hello world".equals("Hello world") // Java...

"Hello world" == "Hello world" # Python!

ではコンパレーターへ。Python は、辞書式順序付けを使用して文字列を比較します。基本的に、各文字列の最初の文字を見て、「どちらが大きいか?」と判断します。それらが同じである場合、それは文字列の下に続きます。いくつかの例:

"ABC" > "BAC" # false, because the character B is greater than A
"AAAB" < "AAAC" # true, because the character B is less than C

mylistそのため、 int で構成されているか文字列で構成されているかに関係なく、コードは機能します。

于 2013-10-01T00:32:11.077 に答える
0

バブル ソート コードにバグがあり、一部 (おそらくほとんど) のリストが正しくソートされません。ただし、これはリスト内の値のデータ型とは関係ありません (数値のリストまたは文字列のリストでも同じ問題が発生します)。

固定コードは次のとおりです。

def bubble(badList):
    length = len(badList) - 1
    unsorted = True

    while unsorted:
        unsorted = False             # this was moved out of the for loop
        for element in range(0,length):
            if badList[element] > badList[element + 1]:
                hold = badList[element + 1]
                badList[element + 1] = badList[element]
                badList[element] = hold
                print badList        # comment this out when you're done testing
                unsorted = True      # this was moved up from the else block

次に示すように、数値と文字列の両方で機能します。

lst = [12, 5, 13, 8, 9, 65]
>>> bubble(lst)
[5, 12, 13, 8, 9, 65]
[5, 12, 8, 13, 9, 65]
[5, 12, 8, 9, 13, 65]
[5, 8, 12, 9, 13, 65]
[5, 8, 9, 12, 13, 65]
>>> lst
[5, 8, 9, 12, 13, 65]
>>> lst = ['a', 'list', 'of', 'words', 'foo', 'bar', 'baz']
>>> bubble(lst)
['a', 'list', 'of', 'foo', 'words', 'bar', 'baz']
['a', 'list', 'of', 'foo', 'bar', 'words', 'baz']
['a', 'list', 'of', 'foo', 'bar', 'baz', 'words']
['a', 'list', 'foo', 'of', 'bar', 'baz', 'words']
['a', 'list', 'foo', 'bar', 'of', 'baz', 'words']
['a', 'list', 'foo', 'bar', 'baz', 'of', 'words']
['a', 'foo', 'list', 'bar', 'baz', 'of', 'words']
['a', 'foo', 'bar', 'list', 'baz', 'of', 'words']
['a', 'foo', 'bar', 'baz', 'list', 'of', 'words']
['a', 'bar', 'foo', 'baz', 'list', 'of', 'words']
['a', 'bar', 'baz', 'foo', 'list', 'of', 'words']
>>> lst
['a', 'bar', 'baz', 'foo', 'list', 'of', 'words']
于 2013-10-01T00:53:07.167 に答える