Как посчитать шаги в сортировке, предпринятые для сортировки чисел в python? - PullRequest
0 голосов
/ 12 февраля 2012

Я использовал это кодирование в функции пузырьковой сортировки для пошагового расчета, сделанного для сортировки

 def bubble(self):
    def bubble_sort ( array ) :
        swap_test = False
        for i in range ( 0, len ( array ) - 1 ):
         for j in range ( 0, len ( array ) - i - 1 ):
          if array[j] > array[j + 1] :
           array[j], array[j + 1] = array[j + 1], array[j]#elegentan way of swap

           swap_test = True
           self.textbox()
          else:
               self.sortingend()
         break
           #if swap_test == False:
        #else:
        #self.create_label()

   #print('bubble to be implemented')
    bubble_sort(self.nums)
    return self.nums

и для двух функций sortingend () и textbox () я использовал эти два кода

def sortingend(self):
    self.label21 = Label(self, text="Sorting Finish", width=25, height=2)
    self.label21.grid(row=7, column=1, sticky=N)

def textbox(self):
    count=0
    count +=1
    self.label1 = Label(self, text="Step: %i " % count, width=25, height=2)
    self.label1.grid(row=6, column=1, sticky=N)

но почему-то это не работает, и я получаю только ошибку для count + = 1, который не определен, но если я добавлю count = o в sortingend (), то каждый раз счетчик будет начинаться с o. Также, когда я запускаю пузырьковую сортировку на первом шаге, она показывает, что сортировка завершена. как это исправить.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2012

В своем коде вы пишете:

def textbox(self):
count=0
count +=1

Это означает, что каждый раз, когда вы звоните textbox(self), вы создаете count=0, увеличиваете его - и в следующий раз, когда вы звоните textbox(self) вы делаете это снова.

0 голосов
/ 12 февраля 2012

Вы получаете ошибку, потому что счетчик не определен.Вы говорите, count = count + 1. Ну, что считать, когда вы начинаете?Вы, вероятно, должны использовать рекурсию, изначально установить count = 0, а затем сделать текстовое поле (self, count + 1)

textbox(self, count):
    self.label1 = Label(self, text="Step: %i " % count, width=25, height=2)
    self.label1.grid(row=6, column=1, sticky=N)


def bubble_sort ( array ) :
    count = 0
    swap_test = False
    for i in range ( 0, len ( array ) - 1 ):
     for j in range ( 0, len ( array ) - i - 1 ):
      if array[j] > array[j + 1] :
       array[j], array[j + 1] = array[j + 1], array[j]#elegentan way of swap

       swap_test = True
       self.textbox(count+1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...