Skip to content

Commit 12f38e4

Browse files
committed
Initial commit
1 parent adeb46d commit 12f38e4

11 files changed

+253
-0
lines changed

LSDradixSort.py

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
from random import randint
2+
3+
def counting_sort(arr, exp):
4+
n = len(arr)
5+
newArr = [0] * n
6+
count = [0] * 10
7+
for i in range(n):
8+
index = arr[i]/exp
9+
count[index % 10] += 1
10+
for i in range(1,10):
11+
count[i] += count[i-1]
12+
i = n - 1
13+
while i >= 0:
14+
index = arr[i]/exp
15+
newArr[count[index % 10] - 1] = arr[i]
16+
count[index % 10] -= 1
17+
i -= 1
18+
for i in range(len(arr)):
19+
arr[i] = newArr[i]
20+
return arr
21+
22+
23+
def lsd_radix_sort(arr):
24+
maximum = max(arr)
25+
exp = 1
26+
while maximum/exp > 0:
27+
counting_sort(arr, exp)
28+
exp *= 10
29+
return arr
30+
31+
32+
if __name__ == "__main__":
33+
array = []
34+
for i in range(20):
35+
array.append(randint(0,10))
36+
print(lsd_radix_sort(array))

bogoSort.py

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# As a joke
2+
from random import randint, random
3+
4+
def bogo_sort(arr):
5+
while not is_sorted(arr):
6+
arr = permutation(arr)
7+
return arr
8+
9+
10+
def is_sorted(arr):
11+
for i in range(len(arr) - 1):
12+
if arr[i] > arr[i+1]:
13+
return False
14+
return True
15+
16+
17+
def permutation(arr):
18+
indexes = []
19+
for i in range(len(arr)):
20+
indexes.append(i)
21+
newArr = []
22+
for i in range(len(arr)):
23+
index = randint(0, len(indexes)-1)
24+
newArr.append(arr[indexes.pop(index)])
25+
return newArr
26+
27+
if __name__ == "__main__":
28+
array = []
29+
for i in range(10):
30+
array.append(random())
31+
bogo_sort(array)
32+
print("Sorted!")

bubbleSort.py

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from random import random
2+
3+
def bubble_sort(arr):
4+
for i in range(len(arr)):
5+
swapped = False
6+
for j in range(len(arr) - i - 1):
7+
if arr[j] > arr[j + 1]:
8+
arr[j + 1], arr[j] = arr[j], arr[j + 1]
9+
swapped = True
10+
if not swapped:
11+
break
12+
return arr
13+
14+
if __name__ == "__main__":
15+
array = []
16+
for i in range(20):
17+
array.append(random())
18+
bubble_sort(array)
19+
print(bubble_sort(array))

bucketSort.py

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from random import randint
2+
from insertionSort import insertion_sort
3+
4+
def bucket_sort(arr, k=5):
5+
buckets = []
6+
for i in range(k):
7+
buckets.append([])
8+
newTab = []
9+
maximum = max(arr)
10+
for i in range(len(arr)):
11+
index = int(k * arr[i] / maximum)
12+
if index == k:
13+
index -= 1
14+
buckets[index].append(arr[i])
15+
for i in range(k):
16+
buckets[i] = insertion_sort(buckets[i])
17+
for j in range(len(buckets[i])):
18+
newTab.append(buckets[i][j])
19+
return newTab
20+
21+
22+
if __name__ == "__main__":
23+
array = []
24+
for i in range(20):
25+
array.append(randint(0, 9))
26+
print(bucket_sort(array))

combSort.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from random import random
2+
3+
def comb_sort(arr):
4+
factor = 1.3
5+
gap = len(arr)
6+
isSorted = False
7+
while not isSorted:
8+
gap = int(gap / factor)
9+
if gap <= 1:
10+
isSorted = True
11+
factor = 1
12+
for i in range(len(arr) - gap):
13+
offsetIndex = gap + i
14+
if arr[i] > arr[offsetIndex]:
15+
arr[i], arr[offsetIndex] = arr[offsetIndex], arr[i]
16+
isSorted = False
17+
return arr
18+
19+
20+
if __name__ == "__main__":
21+
array = []
22+
for i in range(20):
23+
array.append(random())
24+
print(comb_sort(array))

countingSort.py

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from random import randint
2+
3+
def counting_sort(arr):
4+
spread = max(arr) - min(arr) + 1
5+
countArr = [0] * spread
6+
newArr = [0] * len(arr)
7+
for i in range(len(arr)):
8+
countArr[arr[i]] += 1
9+
for i in range(1, spread):
10+
countArr[i] += countArr[i-1]
11+
for i in range(len(arr)-1, -1, -1):
12+
countArr[arr[i]] -= 1
13+
newArr[countArr[arr[i]]] = arr[i]
14+
return newArr
15+
16+
17+
if __name__ == "__main__":
18+
array = []
19+
for i in range(20):
20+
array.append(randint(0,10))
21+
print(counting_sort(array))

insertionSort.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from random import random
2+
3+
def insertion_sort(arr):
4+
for i in range(1, len(arr)):
5+
chosenElem = arr[i]
6+
j = i - 1
7+
while j >= 0 and arr[j] > chosenElem:
8+
arr[j+1] = arr[j]
9+
j -= 1
10+
arr[j+1] = chosenElem
11+
return arr
12+
13+
14+
if __name__ == "__main__":
15+
array = []
16+
for i in range(20):
17+
array.append(random())
18+
print(insertion_sort(array))

insertionSort.pyc

689 Bytes
Binary file not shown.

mergeSort.py

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from random import random
2+
3+
def merge_sort(arr):
4+
if len(arr) >1:
5+
mid = len(arr)//2
6+
L = arr[:mid]
7+
R = arr[mid:]
8+
9+
merge_sort(L)
10+
merge_sort(R)
11+
12+
i = j = k = 0
13+
14+
while i < len(L) and j < len(R):
15+
if L[i] < R[j]:
16+
arr[k] = L[i]
17+
i+= 1
18+
else:
19+
arr[k] = R[j]
20+
j+= 1
21+
k+= 1
22+
23+
while i < len(L):
24+
arr[k] = L[i]
25+
i+= 1
26+
k+= 1
27+
28+
while j < len(R):
29+
arr[k] = R[j]
30+
j+= 1
31+
k+= 1
32+
33+
34+
if __name__ == "__main__":
35+
array = []
36+
for i in range(20):
37+
array.append(random())
38+
merge_sort(array)
39+
print(array)

pigeonholeSort.py

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from random import randint
2+
3+
def pigeonhole_sort(arr):
4+
minimum = min(arr)
5+
size = max(arr) - minimum + 1
6+
holes = [0] * size
7+
for x in arr:
8+
holes[x - minimum] += 1
9+
i = 0
10+
for count in range(size):
11+
while holes[count] > 0:
12+
holes[count] -= 1
13+
arr[i] = count + minimum
14+
i += 1
15+
return arr
16+
17+
if __name__ == "__main__":
18+
array = []
19+
for i in range(20):
20+
array.append(randint(0, 10))
21+
print(pigeonhole_sort(array))

selectionSort.py

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from random import random
2+
3+
def selection_sort(arr):
4+
for i in range(len(arr)):
5+
minimum = i
6+
for j in range(i+1, len(arr)):
7+
if arr[j] < arr[minimum]:
8+
minimum = j
9+
if minimum != i:
10+
arr[i], arr[minimum] = arr[minimum], arr[i]
11+
return arr
12+
13+
if __name__ == "__main__":
14+
array = []
15+
for i in range(20):
16+
array.append(random())
17+
print(selection_sort(array))

0 commit comments

Comments
 (0)