diff --git a/sorts/exchange_sort.py b/sorts/exchange_sort.py index 1ce78a9dc0cb..ed5275c6be6d 100644 --- a/sorts/exchange_sort.py +++ b/sorts/exchange_sort.py @@ -1,4 +1,11 @@ -def exchange_sort(numbers: list[int]) -> list[int]: +from typing import Protocol + + +class Comparable(Protocol): + def __lt__(self, other: object, /) -> bool: ... + + +def exchange_sort[T: Comparable](numbers: list[T]) -> list[T]: """ Uses exchange sort to sort a list of numbers. Source: https://en.wikipedia.org/wiki/Sorting_algorithm#Exchange_sort @@ -12,7 +19,12 @@ def exchange_sort(numbers: list[int]) -> list[int]: [-2, 0, 3, 5, 10] >>> exchange_sort([]) [] - """ + + >>> exchange_sort(["d", "a", "c", "b"]) + ['a', 'b', 'c', 'd'] + >>> exchange_sort([2.5, -1.0, 0.0]) + [-1.0, 0.0, 2.5] +""" numbers_length = len(numbers) for i in range(numbers_length): for j in range(i + 1, numbers_length): diff --git a/tests/test_sorts.py b/tests/test_sorts.py index caa4b31cac81..3906314d26a1 100644 --- a/tests/test_sorts.py +++ b/tests/test_sorts.py @@ -96,6 +96,7 @@ def test_sort_matches_builtin(sort, case): bubble_sort_iterative, bubble_sort_recursive, insertion_sort, + exchange_sort, ], ids=lambda f: f.__name__, )