2017-12-13 5 views
2

クイックソートコードに問題があります。私はコーディングとPython(Python 3.6)に新しいです、どんな助けも本当に感謝します。 Quick Sortオンラインのいくつかの実装を見てきましたが、私のコードで何が本当に間違っているかを知りたいのです。私の代わりに昇順にソートされたリストを取得する[8、2、5、4、1、3、6、7]の出力を取得してい上記入力についてクイックソートコードの問題

def Partition(A): 
    q = A[0] 
    i = 1 
    for j in range(1, len(A)): 
     if A[j] < q: 
      A[j], A[i] = A[i], A[j] 
      i = i + 1 
    A[0], A[i - 1] = A[i - 1], A[0] 
    return i - 1 

def QuickSort(A): 
    if len(A) <= 1: 
     return A 
    else: 
     q = Partition(A) 
     QuickSort(A[ : q]) 
     QuickSort(A[q + 1 : ]) 
     return A 

A = [7, 5, 4, 1, 3, 6, 2, 8] 
Sorted = [] 
Sorted = QuickSort(A) 
print(Sorted) 

:私は以下の私のコードを貼り付けています。彼らが何かを返しますが、あなたは、彼らが返すものを無視し、それが失われています

QuickSort(A[ : q]) 
    QuickSort(A[q + 1 : ]) 

+2

何が間違っているのか、どのような出力が期待され、何を得ているのかを説明できますか?あなたのコードをダンプし、何が間違っているのかを尋ねるのは、スタックオーバーフローのためのトピック外です。 –

+0

@StefanPochmannは私のコードを助けてください。 –

答えて

4

これらはAコピー部品をソートしてみてください。あなたはAに戻し、その結果を記述する必要があります:

A[ : q] = QuickSort(A[ : q]) 
    A[q + 1 : ] = QuickSort(A[q + 1 : ]) 

この変更の後、あなたの結果は予想[1, 2, 3, 4, 5, 6, 7, 8]です。

+0

コメントトレイルをクリアしています。あなたはこれについて私に電話をするのは正しかった。私は過去にパフォーマンスの議論を楽しんだ。プログラミングに挑戦されていることの問題は、あなたが盲点を知らないことである...しかし、私はエンジニアだ。私がプログラミングについて知っていることは、最終的には何らかの形でこのサイトから来ます。 – roganjosh

+0

@roganjosh Heh ... SOがプログラミングを学ぶ最善の方法です:-)。私はここに来て*練習*してもっと* *を学ぶが、最近Rubyに入ったときにRubyの初心者の本を使いました。 –

関連する問題