Skip to content

Commit 08d78ee

Browse files
authored
Update test_algorithms.py
1 parent f4c1677 commit 08d78ee

File tree

1 file changed

+74
-1
lines changed

1 file changed

+74
-1
lines changed

pydatastructs/linear_data_structures/tests/test_algorithms.py

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
cocktail_shaker_sort, quick_sort, longest_common_subsequence, is_ordered,
66
upper_bound, lower_bound, longest_increasing_subsequence, next_permutation,
77
prev_permutation, bubble_sort, linear_search, binary_search, jump_search,
8-
selection_sort, insertion_sort, intro_sort, Backend)
8+
selection_sort, insertion_sort, intro_sort, radix_sort, Backend)
99

1010
from pydatastructs.utils.raises_util import raises
1111
import random
@@ -414,3 +414,76 @@ def test_binary_search():
414414
def test_jump_search():
415415
_test_common_search(jump_search)
416416
_test_common_search(jump_search, backend=Backend.CPP)
417+
418+
def test_radix_sort():
419+
random.seed(1000)
420+
421+
# Test with DynamicOneDimensionalArray
422+
n = random.randint(10, 20)
423+
arr = DynamicOneDimensionalArray(int, 0)
424+
generated_ints = []
425+
for _ in range(n):
426+
integer = random.randint(1, 1000)
427+
generated_ints.append(integer)
428+
arr.append(integer)
429+
for _ in range(n//3):
430+
integer = random.randint(0, n//2)
431+
generated_ints.append(integer)
432+
arr.delete(integer)
433+
expected_arr_1 = [686, 779, 102, 134, 362, 448,
434+
480, 548, None, None, None,
435+
228, 688, 247, 373, 696, None,
436+
None, None, None, None, None,
437+
None, None, None, None, None,
438+
None, None, None, None]
439+
radix_sort(arr, start=2, end=10)
440+
assert arr._data == expected_arr_1
441+
radix_sort(arr)
442+
expected_arr_2 = [102, 134, 228, 247, 362, 373, 448,
443+
480, 548, 686, 688, 696, 779,
444+
None, None, None, None, None, None,
445+
None, None, None, None, None,
446+
None, None, None, None, None, None, None]
447+
assert arr._data == expected_arr_2
448+
assert (arr._last_pos_filled, arr._num, arr._size) == (12, 13, 31)
449+
450+
# Test with DynamicOneDimensionalArray (CPP backend)
451+
arr = DynamicOneDimensionalArray(int, 0, backend=Backend.CPP)
452+
int_idx = 0
453+
for _ in range(n):
454+
arr.append(generated_ints[int_idx])
455+
int_idx += 1
456+
for _ in range(n//3):
457+
arr.delete(generated_ints[int_idx])
458+
int_idx += 1
459+
radix_sort(arr, start=2, end=10)
460+
for i in range(len(expected_arr_1)):
461+
assert arr[i] == expected_arr_1[i]
462+
radix_sort(arr)
463+
for i in range(len(expected_arr_2)):
464+
assert arr[i] == expected_arr_2[i]
465+
assert (arr._last_pos_filled, arr._num, arr.size) == (12, 13, 31)
466+
467+
# Test with OneDimensionalArray
468+
n = random.randint(10, 20)
469+
arr = OneDimensionalArray(int, n)
470+
generated_ints.clear()
471+
for i in range(n):
472+
integer = random.randint(1, 1000)
473+
arr[i] = integer
474+
generated_ints.append(integer)
475+
expected_arr_3 = [42, 695, 147, 500, 768,
476+
998, 473, 732, 728, 426,
477+
709, 910]
478+
radix_sort(arr, start=2, end=5)
479+
assert arr._data == expected_arr_3
480+
481+
# Test with OneDimensionalArray (CPP backend)
482+
arr = OneDimensionalArray(int, n, backend=Backend.CPP)
483+
int_idx = 0
484+
for i in range(n):
485+
arr[i] = generated_ints[int_idx]
486+
int_idx += 1
487+
radix_sort(arr, start=2, end=5)
488+
for i in range(len(expected_arr_3)):
489+
assert arr[i] == expected_arr_3

0 commit comments

Comments
 (0)