How it works
Randomly shuffles the array and checks if sorted. Expected time is factorial. Also known as "stupid sort" or "monkey sort". Use with very small arrays only.
Implementation
function bogoSort(arr) { function isSorted() { for (let i = 1; i < arr.length; i++) if (arr[i-1] > arr[i]) return false; return true; } while (!isSorted()) { for (let i = arr.length-1; i > 0; i--) { const j = Math.floor(Math.random() * (i+1)); [arr[i], arr[j]] = [arr[j], arr[i]]; } } }
import random def bogo_sort(arr): def is_sorted(): return all(arr[i] <= arr[i+1] for i in range(len(arr)-1)) while not is_sorted(): random.shuffle(arr)
void bogoSort(vector<int>& arr) { auto isSorted = [&]() { for (int i = 1; i < (int)arr.size(); i++) if (arr[i-1] > arr[i]) return false; return true; }; while (!isSorted()) { auto rng = default_random_engine{}; shuffle(arr.begin(), arr.end(), rng); } }
void BogoSort(int[] arr) { var rng = new Random(); bool IsSorted() { for (int i = 1; i < arr.Length; i++) if (arr[i-1] > arr[i]) return false; return true; } while (!IsSorted()) { for (int i = arr.Length-1; i > 0; i--) { int j = rng.Next(i+1); (arr[i], arr[j]) = (arr[j], arr[i]); } } }
int isSorted(int arr[], int n) { for (int i = 1; i < n; i++) if (arr[i-1] > arr[i]) return 0; return 1; } void bogoSort(int arr[], int n) { while (!isSorted(arr, n)) for (int i = n-1; i > 0; i--) { int j = rand() % (i+1); int t = arr[i]; arr[i] = arr[j]; arr[j] = t; } }