This is a simple script that sorts lists (of arbitrary lengths) of unsorted numbers from lowest to highest. https://en.wikipedia.org/wiki/Selection_sort.
Selection sort is a very simple sorting algorithm that works by iterating over all elements in an unsorted list and finding the smallest value for each iteration - the smallest value is then pushed to the beginning of the list. This process continues until all elements have been selected and moved to their correct position at the beginning of the list. Sorting elements in this way means all elements are sorted in order - the smallest elements are sorted first, and largest elements are sorted last.
The worst-case performance and complexity of the selection sort algorithm can be described by the following Big O notation equation: O(n^2).
Selection sort is generally much faster compared to bubble sort and performs far less comparison. Selection sort works well with small to medium sized lists and is able to maintain good performance.
I have tested this selection sort algorithm to time how long it takes to sort 100, 1000, and 10,000 unsorted random numbers between 0 and 1000.
Each test was run 3 times (to find the average) using a 2016 MacBook air with a 1.6GHz CPU and 4GB of RAM.
All results are recorded in milliseconds, and averages are rounded to 1 decimal place.
100 elements: test 1: 1ms test 2: 1ms test 3: 2ms average: 1.3ms 1,000 elements: test 1: 95ms test 2: 81ms test 3: 106ms average: 94ms 10,000 elements: test 1: 9,875ms test 2: 10,049ms test 3: 9,969ms average: 9,964.3ms
def sort(list): # initialize offset as 0 offset = 0 # while the offset is less than the length of he unsorted list while offset < len(list): # assume the smallest element in the current list is at position 0 smallest = 0 # for every element in the list starting at offset n for pos, value in enumerate(list[offset:]): # if the current element is less than the current smallest element if value < list[offset + smallest]: # the new smallest element is at the current position of value smallest = pos # swap values list[offset], list[offset + smallest] = list[offset + smallest], list[offset] # increment the offset to ignore sorted elements at the beginning of the list offset +=1 # return sorted list return list print(sort([9, 8, 7, 6, 5, 4, 3, 2, 1, 0]))
… print(sort([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])) # Returns [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Thank you for reading.🐛🐛🐛