Libraryless. Click here for Pure Java version (10698L/59K).
// defaults to median when idx isn't given static <A> A ithSmallest(L<A> l, int idx default l(l)/2) { int n = l(l); if (n <= 80) ret get(sorted(l), idx); int cols = (n+4)/5; new L<A> medians; for (int i = 0; i < cols; i++) medians.add(ithSmallest(subList(l, i*5, 5))); // median of medians A mom = ithSmallest(medians); L<A> setA = filter(l, a -> lessThan(a, mom)); L<A> setB = filter(l, a -> greaterThan(a, mom)); int nA = l(setA); if (idx < nA) ret ithSmallest(setA, idx); if (idx == nA) ret mom; ret ithSmallest(setB, idx-nA-1); }
download show line numbers debug dex old transpilations
Travelled to 1 computer(s): mqqgnosmbjvj
No comments. add comment
| Snippet ID: | #1071798 |
| Snippet name: | ithSmallest - O(n) ith-smallest element selection [dev.] |
| Eternal ID of this version: | #1071798/6 |
| Text MD5: | 18f8f70d0348fa83a590fc6133d06777 |
| Transpilation MD5: | 706e4d8d0cdc4784718ec7dc67ebb6fa |
| Author: | stefan |
| Category: | javax |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2026-09-05 15:58:46 |
| Source code size: | 608 bytes / 23 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 35 / 60 |
| Version history: | 5 change(s) |
| Referenced in: | -