У меня здесь есть программа быстрой сортировки, но, похоже, проблема с результатом. Я думаю, что, должно быть, была проблема в областях, выделенных ниже, когда ссылаются на некоторые значения. Какие-либо предложения?Программа Python-Quicksort на месте
#where l represents low, h represents high
def quick(arr,l,h):
#is this the correct array for quicksorting?
if len(x[l:h]) > 1:
#r is pivot POSITION
r = h
#R is pivot ELEMENT
R = arr[r]
i = l-1
for a in range(l,r+1):
if arr[a] <= arr[r]:
i+=1
arr[i], arr[a] = arr[a], arr[i]
#should I take these values? Note that I have repeated elements below, which is what I want to deal with
quick(arr,l,arr.index(R)-1)
quick(arr,arr.index(R)+arr.count(R),h)
x = [6,4,2,1,7,8,5,3]
quick(x,0,len(x)-1)
print(x)
Это не должен иметь эффект, но вы, вероятно, хотите использовать 'обр [л: з]' в первом 'if' состоянии, а не глобальный' х [л: ч] '. –
Вы пытаетесь реализовать quicksort согласно схеме раздела Lomuto (https://en.wikipedia.org/wiki/Quicksort#Lomuto_partition_scheme)? –
'i = -1' выглядит подозрительно. Разве это не должно быть «i = l - 1»? –