GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — JavaScript/Sorts/FlashSort.js at master · TheAlgorithms/JavaScript Expand file tree/ Copy pathFlashSort.jsMore file actions 87 lines (75 loc) · 1.51 KB / Copy pathFlashSort.jsFile metadata and controls87 lines (75 loc) · 1.51 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 /** * Flashsort is a distribution sorting algorithm showing linear * computational complexity O(n) for uniformly distributed * data sets and relatively little additional memory requirement. * * Wikipedia: https://en.wikipedia.org/wiki/Flashsort */ export function flashSort(arr) { let max = 0 let min = arr[0] const n = arr.length const m = ~~(0.45 * n) const l = new Array(m) for (let i = 1; i < n; ++i) { if (arr[i] < min) { min = arr[i] } if (arr[i] > arr[max]) { max = i } } if (min === arr[max]) { return arr } const c1 = (m - 1) / (arr[max] - min) for (let k = 0; k < m; k++) { l[k] = 0 } for (let j = 0; j < n; ++j) { const k = ~~(c1 * (arr[j] - min)) ++l[k] } for (let p = 1; p < m; ++p) { l[p] = l[p] + l[p - 1] } let hold = arr[max] arr[max] = arr[0] arr[0] = hold // permutation let move = 0 let t let flash let j = 0 let k = m - 1 while (move < n - 1) { while (j > l[k] - 1) { ++j k = ~~(c1 * (arr[j] - min)) } if (k < 0) break flash = arr[j] while (j !== l[k]) { k = ~~(c1 * (flash - min)) hold = arr[(t = --l[k])] arr[t] = flash flash = hold ++move } } // insertion for (j = 1; j < n; j++) { hold = arr[j] let i = j - 1 while (i >= 0 && arr[i] > hold) { arr[i + 1] = arr[i--] } arr[i + 1] = hold } return arr } /** * Implementation of Flash Sort */ // const array = [3, 0, 2, 5, -1, 4, 1, -2] // flashSort(array) |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |