Stalin Sort – sorting right through, one of the sorting algorithms with data loss.
The algorithm is very efficient and efficient, O(n) time complexity.
It works like this:
- Loop through the array, comparing the current element with the next
- If the next element is less than the current one, then delete it
- As a result, we get a sorted array in O(n)
An example of the output of the algorithm:
Numbers: [1, 3, 2, 4, 6, 42, 4, 8, 5, 0, 35, 10]
Gulag: [1, 3, 2, 4, 6, 42, 4, 8, 5, 0, 35, 10]
Element 2 sent to Gulag
Element 4 sent to Gulag
Element 8 sent to Gulag
Element 5 sent to Gulag
Element 0 sent to Gulag
Element 35 sent to Gulag
Element 10 sent to Gulag
Numbers: [1, 3, 4, 6, 42]
Gulag: [2, 4, 8, 5, 0, 35, 10]
Python 3 code:
numbers = [1, 3, 2, 4, 6, 42, 4, 8, 5, 0, 35, 10]
gulag = []
print(f"Numbers: {numbers}")
print(f"Gulag: {numbers}")
i = 0
maximal = numbers[0]
while i < len(numbers):
element = numbers[i]
if maximal > element:
print(f"Element {element} sent to Gulag")
gulag append(element)
del numbers[i]
else:
maximal = element
i += 1
print(f"Numbers: {numbers}")
print(f"Gulag: {gulag}")
Of the disadvantages, data loss can be noted, but if you move to a utopian, ideal, sorted list in O(n), how else?
Links
https://gitlab.com/demensdeum /algorithms/-/tree/master/sortAlgorithms/stalinSort
Sources
https://github.com/gustavo-depaula/stalin-sort
https://www.youtube.com/shorts/juRL-Xn- E00
https://www.youtube.com/watch?v=L78i2YcyYfk