2012-02-11 2 views
0

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

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() и текстовое поле() Я использовал эти два код

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. Также, когда я запускаю сортировку пузырьков на первом шаге, это показывает, что сортировка завершена. как исправить это.

ответ

0

Вы получаете сообщение об ошибке, потому что счетчик не определен. Вы говорите, что count = count + 1. Ну, что подсчитывается, когда вы только начинаете? Вы, вероятно, следует использовать рекурсию, установите счетчик = 0 первоначально, а затем сделать текстовое поле (сам, считай + 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) 
+0

Я добавил счет, но вижу выше каждый раз, когда я буду вызывать текстовое поле(), оно начнется с 0, так как он напишет, он может указывать в строках кодирования. –

+0

@saira_jane Ответ теперь отредактирован. – purpleladydragons

+0

ok, так где я могу определить начальное значение count = o в программе bcoz, иначе я получаю сообщение об ошибке. –

0

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

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

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

+0

yup я знаю, так как я могу это сделать, если я буду определять внешний вид, тогда и это не сработает. –

Смежные вопросы