2016-12-20 1 views
-2

私はソートしなければならない2次元リストを持っています。これまでのところ、私のコードはすべてのリストで機能しません。pythonでsort、set、min、max、removeのようなビルドされた関数を持たないリストをソート

def sort(list): 
    i = 0 
    j = 0 
    while i < len(list): 
     while j < len(list[i]) - 1: 
      if list[i][j] > list[i][j + 1]: 
       temp = list[i][j] 
       list[i][j] = list[i][j + 1] 
       list[i][j + 1] = temp 
      j += 1 
     j = 0 
     i += 1 
    return list 
sort([[3,5,2,8,6,9],[9,1,2,5]]) 

このコードには、順番に番号があります。並べ替える方がいいですか?

+0

ようこそStackOverflow。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。コードを投稿して問題を正確に記述するまでは、効果的にお手伝いすることはできません。 具体的には、何を手に入れましたか?何を期待していますか?このコードは、各リストを個別にソートするように見えます。 – Prune

+0

http://python3.codes/popular-sorting-algorithms/ – acushner

答えて

2

あなたの内部ループは、リストを1回だけ通過します。これにより、最大の要素が最後にあることが保証されますが、必ずしもelsethignを行う必要はありません。あなたは未完成のビジネスがまだある間、継続するためにループを追加する必要があります。

私は、単純な逆順の場合と同様に、問題を強調するために使用したトレースステートメントに残しました。

def sort(list): 
    i = 0 
    j = 0 
    while i < len(list): 
     done = False 
     while not done: 
      done = True 
      while j < len(list[i]) - 1: 
       print i, j, list[i][j], list[i][j + 1] 
       if list[i][j] > list[i][j + 1]: 
        temp = list[i][j] 
        list[i][j] = list[i][j + 1] 
        list[i][j + 1] = temp 
        done = False 
        print "SWAP", list[i] 
       j += 1 

      j = 0 

     i += 1 
    return list 

print sort([[6, 5, 4, 3, 2, 1, 0]]) 
print sort([[3,5,2,8,6,9],[9,1,2,5]]) 
関連する問題