0
我正在嘗試寫幾個小時的第一個快速排序算法,但仍然沒有得到正確的結果。目標是編寫一個用於排序數組的快速排序代碼。我想使用兩個函數:遞歸函數quick_sort和分區函數。第一個分區後快速排序不起作用
我發現分區函數看起來在分割和征服生成的每個子數組上都正常工作,但返回的總數組在第一個分區後似乎沒有改變(第一個分區有效,而第二個,第三個分區,...,似乎沒有效果)。
我一定錯過了這裏的任何提示?
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]是不同的數組,a複製。你應該使用quicksort(a,first,j),quicksort(a,j + 1,last) – UmNyobe
這正是我錯過的地方!非常感謝UmNyobe – enaJ