Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f564e3e

Browse files
committed
merge 0.1
1 parent 9309473 commit f564e3e

File tree

1 file changed

+58
-6
lines changed

1 file changed

+58
-6
lines changed

‎algo_visualizer.py

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,12 @@ def __init__(self, root, title) -> None:
6060
self.display(self.N,self.data,self.colours)
6161

6262

63-
def display(self,N,a,rong):
63+
def display(self,N: int,a: list,rong: list):
64+
'''
65+
N = number of rectangles
66+
a = array of heights of rectangles
67+
rong = array of colours of each and every rectangle'''
68+
6469
self.canvas.delete('all')
6570
width=(2*(780/N))//3
6671
gap=(780/N)//3
@@ -202,14 +207,14 @@ def shuffle(self):
202207
self.display(self.N,self.data,self.colours)
203208
# print(self.data)
204209

205-
def start(self):
210+
def start(self,T=0.2):
206211
if self.st['bubble'] is True:
207212
for i in range(self.N-1):
208213
for j in range(self.N-1-i):
209214
if self.data[j]>self.data[j+1]:
210215
self.data[j],self.data[j+1]=self.data[j+1],self.data[j]
211216
self.display(self.N,self.data,['purple' if a==j or a==j+1 else 'green' if a>self.N-1-i else 'blue' for a in range(self.N)])
212-
time.sleep(0.02)
217+
time.sleep(T)
213218
self.display(self.N,self.data,['green' for _ in range(self.N)])
214219

215220
elif self.st['insertion'] is True:
@@ -220,7 +225,7 @@ def start(self):
220225
self.data[i+1]=self.data[i]
221226
i-=1
222227
self.display(self.N,self.data,['purple' if a==j or a==j+1 else 'green' if a<=j else'blue' for a in range(self.N)])
223-
time.sleep(0.02)
228+
time.sleep(T)
224229
self.data[i+1]=key
225230
self.display(self.N,self.data,['green' for _ in range(self.N)])
226231

@@ -231,14 +236,17 @@ def start(self):
231236
for j in range(i+1,len(self.data)):
232237
if self.data[min_index]>self.data[j]:
233238
self.display(self.N,self.data,['purple' if a==j else 'green' if a<=i else 'blue' for a in range(self.N)])
234-
time.sleep(0.2)
239+
time.sleep(T)
235240
min_index=j
236241
if min_index!=i:
237242
self.data[i], self.data[min_index]=self.data[min_index],self.data[i]
238243
self.display(self.N,self.data,['green' for _ in range(self.N)])
239244

240245

241246
elif self.st['merge'] is True:
247+
self.data=self.mergesort(self.data)
248+
self.display(self.N,self.data,['green' for _ in range(self.N)])
249+
242250
pass
243251

244252
elif self.st['quick'] is True:
@@ -252,7 +260,51 @@ def start(self):
252260
pass
253261

254262
# print(self.data)
255-
263+
264+
#----------------------------------------------------------------------
265+
def mergeelements(self,l,r):
266+
267+
i,j=0,0
268+
b=[]
269+
while i<len(l) and j<len(r):
270+
if l[i]<r[j]:
271+
b.append(l[i])
272+
i+=1
273+
# self.display(self.N,b+self.data[len(b):],['green' if x<len(b) else 'purple' for x in range(self.N) ])
274+
# time.sleep(0.2)
275+
else:
276+
b.append(r[j])
277+
j+=1
278+
# self.display(self.N,b+self.data[len(b):],['green' if x<len(b) else 'purple' for x in range(self.N) ])
279+
# time.sleep(0.2)
280+
281+
while i<len(l):
282+
b.append(l[i])
283+
i+=1
284+
# self.display(self.N,b+self.data[len(b):],['green' if x<len(b) else 'purple' for x in range(self.N) ])
285+
# time.sleep(0.2)
286+
287+
while j<len(r):
288+
b.append(r[j])
289+
j+=1
290+
# self.display(self.N,b+self.data[len(b):],['green' if x<len(b) else 'purple' for x in range(self.N) ])
291+
# time.sleep(0.2)
292+
293+
return b
294+
295+
296+
def mergesort(self,a):
297+
size=len(a)
298+
if size<2:
299+
return a
300+
mid=size//2
301+
l=a[:mid]
302+
r=a[mid:]
303+
l=self.mergesort(l)
304+
r=self.mergesort(r)
305+
return self.mergeelements(l,r)
306+
307+
#---------------------------------------------------------------------------
256308

257309
win = Style(theme='cyborg').master
258310
obj = window(win, 'Sorting Algorithm Visualizer')

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /