-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathalgo.py
70 lines (65 loc) · 1.82 KB
/
algo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
def insertionSort(array):
for j in range(1,len(array)):
key = array[j]
i = j
while i > 0 and array[i - 1] > key:
array[i] = array[i - 1]
i = i - 1
array[i] = key
return array
def mergeSort(array):
if len(array) <= 1:
return array # recursion base case
else:
middle_index = len(array)/2
left = []
right = []
for i in range(middle_index):
left.append(array[i])
for i in range(middle_index,len(array)):
right.append(array[i])
left = mergeSort(left)
right = mergeSort(right)
result = merge(left,right)
return result
def merge(left, right):
result = []
while len(left) > 0 or len(right)>0:
if len(left) > 0 and len(right) > 0:
if left[0] <= right[0]:
result.append(left[0])
left = left[1:]
else:
result.append(right[0])
right = right[1:]
elif len(left) > 0:
result.append(left[0])
left = left[1:]
elif len(right) > 0:
result.append(right[0])
right = right[1:]
return result
def quickSort(array):
if len(array) <= 1:
return array
less = []
greater = []
pivot = array[len(array)/2]
array.remove(pivot)
for value in array:
if value < pivot:
less.append(value)
else:
greater.append(value)
return quickSort(less)+[pivot]+quickSort(greater)
def bubbleSort(array):
swap = True
while swap:
swap = False
for i in range(1,len(array)):
if array[i-1] > array[i]:
save = array[i-1]
array[i-1] = array[i]
array[i] = save
swap = True
return array