shukdevdatta123 commited on
Commit
912c782
·
verified ·
1 Parent(s): 6dfe4cc

Create quickSort.py

Browse files
Files changed (1) hide show
  1. quickSort.py +32 -0
quickSort.py ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import time
2
+ from colors import *
3
+
4
+
5
+ def partition(data, start, end, draw_data, time_tick):
6
+ i = start + 1
7
+ pivot = data[start]
8
+ for j in range(start+1, end+1):
9
+ if data[j] < pivot:
10
+ data[i], data[j] = data[j], data[i]
11
+ i += 1
12
+ data[start], data[i-1] = data[i-1], data[start]
13
+ return i - 1
14
+
15
+
16
+ import random
17
+ def rand_partition(data, start, end, draw_data, time_tick):
18
+ rand = start + random.randrange(end - start + 1)
19
+ data[rand], data[start] = data[start], data[rand]
20
+ return partition(data, start, end, draw_data, time_tick)
21
+
22
+
23
+ def quick_sort(data, start, end, draw_data, time_tick):
24
+ if start < end:
25
+ #pivot_position = partition(data, start, end, draw_data, time_tick)
26
+ pivot_position = rand_partition(data, start, end, draw_data, time_tick)
27
+ quick_sort(data, start, pivot_position-1, draw_data, time_tick)
28
+ quick_sort(data, pivot_position+1, end, draw_data, time_tick)
29
+ draw_data(data, [PURPLE if x >= start and x < pivot_position else YELLOW if x ==
30
+ pivot_position else DARK_BLUE if x > pivot_position and x <= end else BLUE for x in range(len(data))])
31
+ time.sleep(time_tick)
32
+ draw_data(data, [BLUE for x in range(len(data))])