File tree 11 files changed +253
-0
lines changed
11 files changed +253
-0
lines changed Original file line number Diff line number Diff line change
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 ))
Original file line number Diff line number Diff line change
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!" )
Original file line number Diff line number Diff line change
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 ))
Original file line number Diff line number Diff line change
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 ))
Original file line number Diff line number Diff line change
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 ))
Original file line number Diff line number Diff line change
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 ))
Original file line number Diff line number Diff line change
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 ))
Original file line number Diff line number Diff line change
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 )
Original file line number Diff line number Diff line change
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 ))
Original file line number Diff line number Diff line change
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 ))
You can’t perform that action at this time.
0 commit comments