Бинарный поиск Python Graphic - PullRequest
0 голосов
/ 11 ноября 2018

Я работаю над небольшим проектом под названием: «Симулятор, графически показывающий линейный и двоичный поиск. Этот симулятор просит вас выбрать размер массива, затем графически это количество блоков, а затем вы можете вставить данные в эти блоки. Он позволяет вставлять данные только в первый индекс сначала, затем он позволяет второму блоку вставлять данные и т. д. Затем он спрашивает пользователя, какие данные хотят найти, и графически показывает процесс поиска и, наконец, отображает результат. "

Я написал функцию для бинарного поиска, но она показывает только результат Mid и работает должным образом. Только, пожалуйста, помогите мне, и Помогите мне показать процесс Алгоритма, он меняет цвет метки, элементом которой является бинарный поиск. проверка.

import tkinter as tk

root=tk.Tk()
root.title("Linear & Binary Search")
root.geometry("1200x600")

box_list = []   # Create list of Entrys

#Functions
def binarySearch():
    index_list = []
    global snum, box_list
    x = snum.get()

    l=len(box_list)
    r=len(box_list)-1

    if r >= l: 

        mid = l + (r - l)/2

        if box_list[mid] == x: 
            index_list.append(mid)

        elif box_list[mid] > x: 
            return binarySearch(box_list, l, mid-1, x) 

        else: 
            return binarySearch(box_list, mid+1, r, x)



    #Print Area
    temp0=tk.Frame(root)
    temp0.pack()
    tk.Label(temp0,text="\n").pack()

    Result=tk.Frame(root)
    Result.pack()

    tk.Label(Result,text="Searched for  ",
                   font="Arial 10 bold",fg="blue",pady="10",
                   anchor="w").grid(row=0,column=0)
    tk.Label(Result, text=snum.get(),
             font="Arial 12 bold",bg="green",
             fg="white",bd="5",justify="left",
             padx="25",pady="25",
             relief="groove").grid(row=0,column=1)
    tk.Label(Result,text="  Result  ",
             font="Arial 10 bold",fg="blue",
             pady="10",anchor="w").grid(row=0,column=2)
    print(index_list)
    tk.Label(Result,text=index_list,
             font="Arial 12 bold",bg="green",
             fg="white",bd="5",justify="left",
             padx="25",pady="25",
             relief="groove").grid(row=0,column=3)

def ApplytoLabel():
    global snum, box_list
    xx=size.get()
    for i in range(xx):
        if box_list[i].cget('state') == 'normal':
            element = box_list[i].get() # Get value from corresponding Entry
            ArrayLabel=tk.Label(OutputArray,text=element,
                                font="Arial 12 bold",
                                bg="red",fg="white",
                                bd="5",justify="left",
                                padx="25",pady="25",
                                relief="groove")
            ArrayLabel.pack(side="left")
            box_list[i].configure(state='disabled')
            try:
                box_list[i+1].configure(state='normal')
            except IndexError: pass
            break


def Boxes():
    xx=size.get()
    for i in range(xx):        
        box=tk.Entry(InputArray,font="Arial 10 bold",bd="5",width="5",state='disabled' if i else 'normal')
        box.pack(side="left")
        box_list.append(box)
    ApplytoLabel1=tk.Button(InputArray,text="Submit To Array",command=ApplytoLabel).pack()


#Size of Array
Array = tk.Frame(root)
Array.pack()

text1=tk.Label(Array,text="Enter the Size of Array:",
               font="Arial 10 bold",fg="blue",
               pady="10",anchor="w").grid(row=0,column=0)

size=tk.IntVar()

ArraySize=tk.Entry(Array,textvariable=size,
                   font="Arial 10 bold",
                   bd="5").grid(row=0,column=1,sticky="w")
SizeofArray=tk.Button(Array,text="Submit",
                      command=Boxes).grid(row=0,column=2,sticky="w")




#Search Element
text2=tk.Label(Array,text="Number to search:",
               font="Arial 10 bold",fg="blue",pady="10",anchor="w")
text2.grid(row=2,column=0)
snum = tk.IntVar()
SearchNum=tk.Entry(Array,textvariable=snum,font="Arial 10 bold",bd="5")
SearchNum.grid(row=2,column=1)

BinarySearch=tk.Button(Array,text="Binary Search",command=binarySearch)
BinarySearch.grid(row=2,column=3)
#Search Element End


temp0=tk.Frame(root)
temp0.pack()
Space=tk.Label(temp0,text="\n")
Space.pack()

InputArray=tk.Frame(root)
InputArray.pack()

temp0=tk.Frame(root)
temp0.pack()
tk.Label(temp0,text="\n \n").pack()


OutputArray=tk.Frame(root)
OutputArray.pack()



root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...