diff --git a/sorts/exchange_sort.py b/sorts/exchange_sort.py index 1ce78a9dc0cb..b6c1a4b6bd8a 100644 --- a/sorts/exchange_sort.py +++ b/sorts/exchange_sort.py @@ -1,27 +1,25 @@ -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([]) - [] + 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] """ - 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 + 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)) + import doctest + + doctest.testmod()