From 797703b48dedd1d6f6fec87f1325987d5a8faa74 Mon Sep 17 00:00:00 2001 From: Harshaabhi Date: Mon, 27 Oct 2025 08:33:21 +0530 Subject: [PATCH 1/2] style: Add type hints and doctest to sorts/exchange_sort.py --- sorts/exchange_sort.py | 44 +++++++++++++++++++----------------------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/sorts/exchange_sort.py b/sorts/exchange_sort.py index 1ce78a9dc0cb..453c01833bea 100644 --- a/sorts/exchange_sort.py +++ b/sorts/exchange_sort.py @@ -1,27 +1,23 @@ -def exchange_sort(numbers: list[int]) -> list[int]: +def exchange_sort(data: list) -> list: """ - Uses exchange sort to sort a list of numbers. - Source: https://en.wikipedia.org/wiki/Sorting_algorithm#Exchange_sort - >>> exchange_sort([5, 4, 3, 2, 1]) - [1, 2, 3, 4, 5] - >>> exchange_sort([-1, -2, -3]) - [-3, -2, -1] - >>> exchange_sort([1, 2, 3, 4, 5]) - [1, 2, 3, 4, 5] - >>> exchange_sort([0, 10, -2, 5, 3]) - [-2, 0, 3, 5, 10] - >>> exchange_sort([]) - [] - """ - numbers_length = len(numbers) - for i in range(numbers_length): - for j in range(i + 1, numbers_length): - if numbers[j] < numbers[i]: - numbers[i], numbers[j] = numbers[j], numbers[i] - return numbers + Sorts a list of elements using the Exchange Sort algorithm. + + Exchange Sort is a variant of Bubble Sort, swapping elements if they + are found to be out of order. + Examples: + >>> exchange_sort([5, 2, 9, 1, 5]) + [1, 2, 5, 5, 9] + >>> exchange_sort([10, 5, 3, 2]) + [2, 3, 5, 10] + """ + n = len(data) + for i in range(n): + for j in range(i + 1, n): + if data[i] > data[j]: + data[i], data[j] = data[j], data[i] + return data -if __name__ == "__main__": - user_input = input("Enter numbers separated by a comma:\n").strip() - unsorted = [int(item) for item in user_input.split(",")] - print(exchange_sort(unsorted)) +if __name__ == '__main__': + import doctest + doctest.testmod() From 1c68decefa27bba9f8893bf2b2bcc112478d9386 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 Oct 2025 03:11:27 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- sorts/exchange_sort.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sorts/exchange_sort.py b/sorts/exchange_sort.py index 453c01833bea..b6c1a4b6bd8a 100644 --- a/sorts/exchange_sort.py +++ b/sorts/exchange_sort.py @@ -18,6 +18,8 @@ def exchange_sort(data: list) -> list: data[i], data[j] = data[j], data[i] return data -if __name__ == '__main__': + +if __name__ == "__main__": import doctest + doctest.testmod()