0
私は最初のクイックソートアルゴリズムを何時間も書こうとしていますが、それでも問題は解決しません。目標は、配列をソートするためのクイックソートコードを書くことです。再帰関数quick_sortとパーティション関数の2つの関数を使いたいと思います。最初のパーティションの後にクイックソートが機能しない
除算と征服によって生成された各サブアレイでパーティション関数が正しく動作しているように見えますが、返された合計配列は最初のパーティション(最初のパーティションは効果があり、 、...、効果がないと思われた)。
私はここに何かを逃したに違いない、何かヒント?あなたはこれが再びのみ最初の反復を行うwilll quicksort(a)
を呼び出しているので、あなたはすべての最初の反復として低域と高を設定紀元前
def partition(a, first, last):
x = a[0]
j = 0
for i in range((first+1), (last+1)):
if x >= a[i]:
j = j + 1
a[i], a[j] = a[j], a[i]
a[0], a[j] = a[j], a[0]
return j
def quicksort(a):
quick_sort(a, 0, len(a) - 1)
def quick_sort(a, first, last):
if first < last:
j = partition(a, first, last)
# devide a into two parts and do quicksort respectively
quicksort(a[:j])
quicksort(a[j+1:])
return a
a = [6.5, 4, 2, 3, 9, 8, 9, 4, 7, 6, 1]
quicksort(a)
a [:j]は異なる配列です。コピー。 quicksort(a、first、j)、quicksort(a、j + 1、last)を使用してください。 – UmNyobe
これは私が逃したところです!ありがとうたくさんのUmNyobe – enaJ