How it works
Selection sort adapted for duplicates.
Implementation
function bingoSort(arr) { let max = Math.max(...arr); let nextMax, idx = arr.length - 1; while (idx > 0) { nextMax = arr[0]; for (let i = 1; i <= idx; i++) { if (arr[i] === max) { [arr[i], arr[idx]] = [arr[idx], arr[i]]; idx--; } else if (arr[i] > nextMax) nextMax = arr[i]; } max = nextMax; } }
def bingo_sort(arr): mx = max(arr) idx = len(arr) - 1 while idx > 0: next_max = arr[0] for i in range(1, idx + 1): if arr[i] == mx: arr[i], arr[idx] = arr[idx], arr[i] idx -= 1 elif arr[i] > next_max: next_max = arr[i] mx = next_max
void bingoSort(vector<int>& arr) { int mx = *max_element(arr.begin(), arr.end()); int idx = arr.size() - 1; while (idx > 0) { int nextMax = arr[0]; for (int i = 1; i <= idx; i++) { if (arr[i] == mx) { swap(arr[i], arr[idx]); idx--; } else if (arr[i] > nextMax) nextMax = arr[i]; } mx = nextMax; } }
void BingoSort(int[] arr) { int max = arr.Max(), idx = arr.Length - 1; while (idx > 0) { int nextMax = arr[0]; for (int i = 1; i <= idx; i++) { if (arr[i] == max) { (arr[i], arr[idx]) = (arr[idx], arr[i]); idx--; } else if (arr[i] > nextMax) nextMax = arr[i]; } max = nextMax; } }
void bingoSort(int arr[], int n) { int max = arr[0]; for (int i = 1; i < n; i++) if (arr[i] > max) max = arr[i]; int idx = n - 1; while (idx > 0) { int nextMax = arr[0]; for (int i = 1; i <= idx; i++) { if (arr[i] == max) { int t = arr[i]; arr[i] = arr[idx]; arr[idx] = t; idx--; } else if (arr[i] > nextMax) nextMax = arr[i]; } max = nextMax; } }