0
我想分區的數組,使數組的前半部分中的每個元素小於數組後半部分中的每個元素。這與快速排序中使用的分區算法相同。出於某種原因,我可以使數組A = [2, 8, 7, 1, 3, 5, 6, 4]
工作,但A = [7, 3, 6, 1, 9, 5, 4, 8]
將無法工作。分區陣列沒有正確出來
def partition(A):
x = A[len(A)-1]
i = -1
for j in range (0, len(A)-2):
if A[j]<=x:
i = i + 1
# exchange A[j] and A[i]
jValue = A[j]
A[j] = A[i]
A[i] = jValue
# exchange A[len(A)-1] and A[i+1]
rValue = A[len(A)-1]
A[len(A)-1] = A[i+1]
A[i+1] = rValue
print(A)
進行調試1)寫上你會看到每一遍的東西。 2)讓程序打印出它的位置以及每次傳遞的輸入和輸出。他們不同意哪裏?爲什麼?是的,這很乏味,但你會在幾分鐘內找到問題? ; - /猜猜我如何調試代碼。 ; -/ –
我在紙上做了十幾遍整個過程,我得到的答案與我的代碼輸出相匹配。我注意到'A = [7,3,6,1,9,5,4,8]'的原因並不按我期望的方式工作,因爲前4個數字小於索引7處的數據點 – Brosef