How it works
Efficient distribution sort.
Implementation
function flashSort(arr) { const n = arr.length, m = Math.floor(0.45 * n); let min = arr[0], maxIdx = 0; for (let i = 1; i < n; i++) { if (arr[i] < min) min = arr[i]; if (arr[i] > arr[maxIdx]) maxIdx = i; } if (arr[maxIdx] === min) return; const c1 = (m-1) / (arr[maxIdx] - min); // Classify, permute, then insertion sort buckets }
def flash_sort(arr): n = len(arr) m = int(0.45 * n) mi = min(arr) max_idx = arr.index(max(arr)) if arr[max_idx] == mi: return c1 = (m - 1) / (arr[max_idx] - mi) # Classify, permute, then insertion sort
void flashSort(vector<int>& arr) { int n = arr.size(), m = (int)(0.45 * n); int mi = *min_element(arr.begin(), arr.end()); int maxIdx = max_element(arr.begin(), arr.end()) - arr.begin(); if (arr[maxIdx] == mi) return; double c1 = (m-1.0) / (arr[maxIdx] - mi); // Classify, permute, insertion sort }
void FlashSort(int[] arr) { int n = arr.Length, m = (int)(0.45 * n); int min = arr.Min(); int maxIdx = Array.IndexOf(arr, arr.Max()); if (arr[maxIdx] == min) return; double c1 = (m-1.0) / (arr[maxIdx] - min); // Classify, permute, then insertion sort }
void flashSort(int arr[], int n) { int m = (int)(0.45 * n); int min = arr[0], maxIdx = 0; for (int i = 1; i < n; i++) { if (arr[i] < min) min = arr[i]; if (arr[i] > arr[maxIdx]) maxIdx = i; } if (arr[maxIdx] == min) return; double c1 = (m-1.0) / (arr[maxIdx] - min); // Classify, permute, insertion sort }