Я пытаюсь реализовать пару методов сортировки в массиве ctypes целых чисел в Python 3 и, похоже, не может определить метод Quicksort. Я считаю, что большая часть моего кода верна, но мне просто не хватает глупого заявления. Прямо сейчас все, что я получаю, когда пытаюсь напечатать массив, который возвращается, является объектом «NoneType».Быстрое сортирование массива cType чисел
Большое спасибо.
#Quicksort Algorithm
def quicksort(list):
n = len(list)
return recquick(list, 0, n-1)
#Recursive Quicksort Function
def recquick(list, first, last):
#Base Case
if first >= last:
return
else:
#Save pivot value
pivot = list[first]
pos = partseq(list, first, last)
#Repeat the process on the two subsequences
recquick(list, first, pos-1)
recquick(list, pos+1, last)
#Partitions subsequence using first key as pivot
def partseq(list, first, last):
#Save pivot value
pivot = list[first]
#Find pivot position and move elements around the pivot
left = first + 1
right = last
while left <= right:
#Find the first key larger than the pivot
while left < right and list[left] < pivot:
left += 1
#find the last key in the sequence that is smaller than the pivot
while right >= left and list[right] >= pivot:
right -= 1
#Swap the two keys
if left < right:
tmp = list[left]
list[left] = list[right]
list[right] = tmp
#Put the pivot in the proper position
if right != first:
list[first] = list[right]
list[right] = pivot
#Return index position of the pivot value
return right
указывает на то, что 'quicksort' не оператор возврата (и, таким образом, возвращает' None') лишними? : P – akaIDIOT
Да, извините, даже если я изменю его на 'return recquick (list, 0, n-1)' проблема остается. –
Ну, в этот момент 'recquick' никогда не возвращает список. Кажется, что ваш код сортирует список «на месте», если вы проверили список, который вы вставили, действительно ли оно сортируется (или, по крайней мере, отличается от того, когда вы начали работу)? – akaIDIOT