Skip to content

Commit 685aa2e

Browse files
committed
add bead sort algorithm
1 parent 2ff8eb1 commit 685aa2e

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

arrays/bead_sort.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"""
2+
array = [4, 7, 9, 2, 3, 6, 7]
3+
bead_sort(array) => [2, 3, 4, 6, 7, 7, 9]
4+
"""
5+
6+
from typing import List
7+
8+
9+
def bead_sort(sequence: List[int]) -> List[int]:
10+
for number in sequence:
11+
if not isinstance(number, int) or number < 0:
12+
raise TypeError('Sequence must be list or non-negative integers.')
13+
for _ in range(len(sequence)):
14+
for i, (first, second) in enumerate(zip(sequence, sequence[1:])):
15+
if second < first:
16+
distance = first - second
17+
sequence[i] -= distance
18+
sequence[i+1] += distance
19+
return sequence
20+
21+
22+
if __name__ == "__main__":
23+
array = [4, 7, 9, 2, 3, 6, 7]
24+
bead_sort(array)
25+
print(array == [2, 3, 4, 6, 7, 7, 9])

0 commit comments

Comments
 (0)