How it works
Works like a garden gnome sorting flower pots — moves forward when things are in order, steps back to fix when they are not.
Implementation
function gnomeSort(arr) { let i = 1; while (i < arr.length) { if (i === 0 || arr[i] >= arr[i-1]) { i++; } else { [arr[i], arr[i-1]] = [arr[i-1], arr[i]]; i--; } } }
def gnome_sort(arr): i = 1 while i < len(arr): if i == 0 or arr[i] >= arr[i-1]: i += 1 else: arr[i], arr[i-1] = arr[i-1], arr[i] i -= 1
void gnomeSort(vector<int>& arr) { int i = 1; while (i < (int)arr.size()) { if (i == 0 || arr[i] >= arr[i-1]) i++; else { swap(arr[i], arr[i-1]); i--; } } }
void GnomeSort(int[] arr) { int i = 1; while (i < arr.Length) { if (i == 0 || arr[i] >= arr[i-1]) i++; else { (arr[i], arr[i-1]) = (arr[i-1], arr[i]); i--; } } }
void gnomeSort(int arr[], int n) { int i = 1; while (i < n) { if (i == 0 || arr[i] >= arr[i-1]) i++; else { int t = arr[i]; arr[i] = arr[i-1]; arr[i-1] = t; i--; } } }