Здравствуйте, я работаю над алгоритмами и написал рабочую версию быстрой сортировки, см. Код ниже:
def quickSort(mylist, l, r):
if l < r:
q = partition(mylist, l, r)
quickSort(mylist, l, q-1)
quickSort(mylist, q+1, r)
def partition(mylist, l, r):
i = l-1
j = l
while j < r:
if mylist[j] < mylist[r]:
i += 1
mylist[i], mylist[j] = mylist[j], mylist[i]
j += 1
mylist[i+1], mylist[j] = mylist[j], mylist[i+1]
return i+1
mylist = [54,26,93,17,77,31,44,55,20,22]
l = 0
r = len(mylist) -1
quickSort(mylist, l, r)
Однако, когда я запускаю это, я получаю
UnboundLocalError: локальная переменная 'section', указанная перед присваиванием
И исправление состоит в том, чтобы переместить определение внутренней функции partition
в верхнюю часть quickSort
, чтобы она не вызывала partition
до ее определения.
Но я не понимаю, почему, я предполагаю, что внутренние функции не «существуют» до того, как внешние будут фактически выполнены. Может кто-нибудь прояснить этот вопрос для меня?