Skip to content

Commit 4a3cbb7

Browse files
aig031goswami-rahul
authored andcommitted
Created radix_sort.py in algorithms/sort (#303)
* Create radix_sort.py * Update test_sort.py * Update __init__.py * Update radix_sort.py * Update radix_sort.py * Update README.md * Update README_CN.md * Update README_GE.md * Update README_JP.md * Update README_KR.md
1 parent bb9d6c1 commit 4a3cbb7

File tree

8 files changed

+38
-1
lines changed

8 files changed

+38
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ If you want to uninstall algorithms, it is as simple as:
226226
- [meeting_rooms](algorithms/sort/meeting_rooms.py)
227227
- [merge_sort](algorithms/sort/merge_sort.py)
228228
- [quick_sort](algorithms/sort/quick_sort.py)
229+
- [radix_sort](algorithms/sort/radix_sort.py)
229230
- [selection_sort](algorithms/sort/selection_sort.py)
230231
- [shell_sort](algorithms/sort/shell_sort.py)
231232
- [sort_colors](algorithms/sort/sort_colors.py)

README_CN.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ pip3 uninstall -y algorithms
208208
- [meeting_rooms:会议室](algorithms/sort/meeting_rooms.py)
209209
- [merge_sort:归并排序](algorithms/sort/merge_sort.py)
210210
- [quick_sort:快速排序](algorithms/sort/quick_sort.py)
211+
- [radix_sort](algorithms/sort/radix_sort.py)
211212
- [selection_sort:选择排序](algorithms/sort/selection_sort.py)
212213
- [shell_sort](algorithms/sort/shell_sort.py)
213214
- [sort_colors:颜色排序](algorithms/sort/sort_colors.py)

README_GE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ Um das Projekt zu deinstallieren tippen Sie folgendes:
233233
- [meeting_rooms](algorithms/sort/meeting_rooms.py)
234234
- [merge_sort](algorithms/sort/merge_sort.py)
235235
- [quick_sort](algorithms/sort/quick_sort.py)
236+
- [radix_sort](algorithms/sort/radix_sort.py)
236237
- [selection_sort](algorithms/sort/selection_sort.py)
237238
- [shell_sort](algorithms/sort/shell_sort.py)
238239
- [sort_colors](algorithms/sort/sort_colors.py)

README_JP.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ if __name__ == "__main__":
223223
- [meeting_rooms](algorithms/sort/meeting_rooms.py)
224224
- [merge_sort](algorithms/sort/merge_sort.py)
225225
- [quick_sort](algorithms/sort/quick_sort.py)
226+
- [radix_sort](algorithms/sort/radix_sort.py)
226227
- [selection_sort](algorithms/sort/selection_sort.py)
227228
- [shell_sort](algorithms/sort/shell_sort.py)
228229
- [sort_colors](algorithms/sort/sort_colors.py)

README_KR.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ if __name__ == "__main__":
218218
- [meeting_rooms](algorithms/sort/meeting_rooms.py)
219219
- [merge_sort](algorithms/sort/merge_sort.py)
220220
- [quick_sort](algorithms/sort/quick_sort.py)
221+
- [radix_sort](algorithms/sort/radix_sort.py)
221222
- [selection_sort](algorithms/sort/selection_sort.py)
222223
- [sort_colors](algorithms/sort/sort_colors.py)
223224
- [topsort](algorithms/sort/topsort.py)

algorithms/sort/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@
88
from .selection_sort import *
99
from .bucket_sort import *
1010
from .shell_sort import *
11+
from .radix_sort import *

algorithms/sort/radix_sort.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"""
2+
radix sort
3+
complexity: O(nk) . n is the size of input list and k is the digit length of the number
4+
"""
5+
def radix_sort(arr):
6+
is_done = False
7+
position = 1
8+
9+
while not is_done:
10+
queue_list = [list() for _ in range(10)]
11+
is_done = True
12+
13+
for num in arr:
14+
digit_number = num // position % 10
15+
queue_list[digit_number].append(num)
16+
if is_done and digit_number > 0:
17+
is_done = False
18+
19+
index = 0
20+
for numbers in queue_list:
21+
for num in numbers:
22+
arr[index] = num
23+
index += 1
24+
25+
position *= 10
26+
return arr

tests/test_sort.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
quick_sort,
99
selection_sort,
1010
bucket_sort,
11-
shell_sort
11+
shell_sort,
12+
radix_sort
1213
)
1314

1415
import unittest
@@ -59,6 +60,10 @@ def test_shell_sort(self):
5960
self.assertEqual([1, 5, 23, 57, 65, 1232],
6061
shell_sort([1, 5, 65, 23, 57, 1232]))
6162

63+
def test_radix_sort(self):
64+
self.assertEqual([1, 5, 23, 57, 65, 1232],
65+
radix_sort([1, 5, 65, 23, 57, 1232]))
66+
6267

6368

6469
if __name__ == "__main__":

0 commit comments

Comments
 (0)