Stalin sort (also ‘**dictator sort**‘ and ‘**trump sort**‘) is a nonsensical ‘sorting’ algorithm in which each element that is not in the correct order is simply eliminated from the list.

This sorting algorithm is a less destructive variation of Stalin sort, that will actually sort the list: In this case, the elements that are not in order are moved to the start of the list in the order in which they appeared in the original list. The process is then repeated until the list is sorted.

**Examples:**

Input:arr[] = {2, 1, 4, 3, 6, 5, 8, 7, 10, 9}

Output:1 2 3 4 5 6 7 8 9 10

Explanation:

Those elements which were moved to the start of the list are marked bold:

[2, 1, 4, 3, 6, 5, 8, 7, 10, 9]

[1, 3, 5, 7, 92, 4, 6, 8, 10]

[2, 4, 6, 8, 1, 3, 5, 7, 9, 10]

[1, 3, 5, 7,2, 4, 6, 8, 9, 10]

[2, 4, 6,1, 3, 5, 7, 8, 9, 10]

[1, 3, 5,2, 4, 6, 7, 8, 9, 10]

[2, 4,1, 3, 5, 6, 7, 8, 9, 10]

[1, 3,2, 4, 5, 6, 7, 8, 9, 10]

[2,1, 3, 4, 5, 6, 7, 8, 9, 10]

[1,2, 3, 4, 5, 6, 7, 8, 9, 10]

Input:[9, 10, 7, 8, 5, 6, 3, 4, 1, 2]

Output:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Explanation:

[9, 10, 7, 8, 5, 6, 3, 4, 1, 2]

[7, 8, 5, 6, 3, 4, 1, 2, 9, 10]

[5, 6, 3, 4, 1, 2, 7, 8, 9, 10]

[3, 4, 1, 2, 5, 6, 7, 8, 9, 10]

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

**Approach:** The idea is to push the elements at the start of the array whenever it is less than the previous element. Repeat this step until there is no such element that is not in the correct order.

Below is the implementation of the above approach:

## Python

`# Python implementation to sort ` `# the array by using the variation ` `# of the Stalin sort ` ` ` `# Function to sort the array ` `def` `variationStalinsort(arr): ` ` ` `j ` `=` `0` ` ` `while` `True` `: ` ` ` `moved ` `=` `0` ` ` `for` `i ` `in` `range` `(` `len` `(arr) ` `-` `1` `-` `j): ` ` ` `if` `arr[i] > arr[i ` `+` `1` `]: ` ` ` `arr.insert(moved, arr.pop(i ` `+` `1` `)) ` ` ` `moved ` `+` `=` `1` ` ` `j ` `+` `=` `1` ` ` `if` `moved ` `=` `=` `0` `: ` ` ` `break` ` ` `return` `arr ` ` ` `# Driver Code ` `if` `__name__ ` `=` `=` `"__main__"` `: ` ` ` `arr ` `=` `[` `2` `, ` `1` `, ` `4` `, ` `3` `, ` `6` `, ` `5` `, ` `8` `, ` `7` `, ` `10` `, ` `9` `] ` ` ` ` ` `# Function Call ` ` ` `print` `(variationStalinsort(arr)) ` |

*chevron_right*

*filter_none*

**Output:**

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

**Worst Time Complexity:** O(N^{2})

**Best Time Complexity:** O(N)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.

## Recommended Posts:

- Program for Coefficient of variation
- sciPy stats.variation() function | Python
- Move matrix elements in given direction and add elements with same value
- Find start and ending index of an element in an unsorted array
- Move all zeros to start and ones to end in an Array of random integers
- Comparison among Bubble Sort, Selection Sort and Insertion Sort
- Sort elements of an array in increasing order of absolute difference of adjacent elements
- Insertion sort to sort even and odd positioned elements in different orders
- Count of Array elements greater than all elements on its left and at least K elements on its right
- Count of Array elements greater than all elements on its left and next K elements on its right
- Sort an array by swapping elements of different type specified by another array
- Given a binary string, count number of substrings that start and end with 1.
- Program to find the head start in a race
- Maximum sum subarray such that start and end values are same
- Python | Ways to remove n characters from start of given string
- Start and stop a thread in Python
- How to Start Learning Machine Learning?
- Best Way To Start Learning Python - A Complete Roadmap
- Count ways to reach end from start stone with at most K jumps at each step
- Python | Move given element to List Start

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.