Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 20 additions & 22 deletions sorts/exchange_sort.py
Original file line number Diff line number Diff line change
@@ -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()