0

Python を学習したばかりで、リストの並べ替えの話題に取り掛かりました。挿入と選択の 2 種類のアルゴリズムが示されました。だから、私はアイデアを持っていて、これを作成しました:

def DiffSort(lst):
    lstDiff = [None] * len(lst)
    i = 0

    while i < len(lst):
        lstDiff[i] = lst[i] - lst[i-1] if i != 0 else lst[0]

        if lstDiff[i] < 0:
            sbj, tmp = lst[i], lstDiff[i]

            while tmp < 0:
                i -= 1
                tmp += lstDiff[i]
                lst[i+1] = lst[i]

            lst[i] = sbj
        else:
            i += 1

lst = [13,25,18,122,32,1,0.78,25,85,1,32,56,0.55,0.6,17]
print(lst)

DiffSort(lst)

print(lst)

何かいい?すでに同様の方法はありますか?

4

2 に答える 2

1

list.sort()リストをその場でソートしたい場合。

sorted(list)リストのソートされたコピーを返したい場合。

2 番目のオプションは任意のイテラブル型で機能しますが、最初のオプションはリスト排他的です (ただし、他の型にも同じまたは類似の関数が定義されている場合がありますが、一般的には期待できません)。

あなたはそのアルゴリズム部分を気にしているように見えるので、これはあなたにとって興味深いかもしれません: http://svn.python.org/projects/python/trunk/Objects/listsort.txt

于 2013-02-24T22:49:30.273 に答える
0

lst.sort() で十分ではありませんか? O(n^2) 時間で実行する必要がある Python ソリューションよりもはるかに高速になるはずです。

于 2013-02-24T22:39:15.320 に答える