Это мои алгоритмы quicksort. Очень простойQuicksort реализовать в Python запустить без остановки
x = 0
def swap(list, a, b):
temp = list[a]
list[a] = list[b]
list[b] = temp
return list
def quicksort2(list, left, right):
if right > left:
global x
x = x + 1
print x , list, left, right
l = left+1
r = right
while l <= r :
while list[l] < list[left]:
l = l + 1
while list[r] > list[left]:
r = r - 1
if l < r:
list = swap(list, l, r)
list = swap(list, left, r)
list = quicksort2(list, left, r-1);
return quicksort2(list, r+1, right);
return list
Но когда я бегу мое TestCase
b = list([1, 2, 2, 3, 4, 5, 6, 12, 6, 32])
quicksort2(b, 0, len(b)-1)
результат
1 [1, 2, 2, 3, 4, 5, 6, 12, 6, 32] 0 9
2 [1, 2, 2, 3, 4, 5, 6, 12, 6, 32] 1 9
и останавливаться на этом ... Кто-нибудь есть какие-либо причины ...
Ваша попытка не очень просто, вы могли бы хотеть просто посмотреть здесь: http://en.literateprograms.org/Quicksort_(Python) Ваш код очень более сложным – jamylak
на стороне примечания, 'list [a], list [b] = list [b], list [a]' - это питонический способ обмена свопами – karthikr