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
14 changes: 11 additions & 3 deletions sorts/selection_sort.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,16 @@ def selection_sort(collection: list[int]) -> list[int]:
"""
Sorts a list in ascending order using the selection sort algorithm.

Selection sort works by repeatedly finding the minimum element from the
unsorted portion of the list and placing it at the beginning.

:param collection: A list of integers to be sorted.
:return: The sorted list.

Time Complexity: O(n^2) - where n is the number of elements.
The algorithm always makes n*(n-1)/2 comparisons regardless of input.
Space Complexity: O(1) - sorts in place using only a constant amount of extra space.

Examples:
>>> selection_sort([0, 5, 3, 2, 2])
[0, 2, 2, 3, 5]
Expand All @@ -15,7 +22,6 @@ def selection_sort(collection: list[int]) -> list[int]:
>>> selection_sort([-2, -5, -45])
[-45, -5, -2]
"""

length = len(collection)
for i in range(length - 1):
min_index = i
Expand All @@ -28,7 +34,9 @@ def selection_sort(collection: list[int]) -> list[int]:


if __name__ == "__main__":
import doctest

doctest.testmod()
user_input = input("Enter numbers separated by a comma:\n").strip()
unsorted = [int(item) for item in user_input.split(",")]
sorted_list = selection_sort(unsorted)
print("Sorted List:", sorted_list)
print(selection_sort(unsorted))