Hacker News new | ask | show | jobs
by semireg 26 days ago
Kind of like the “uncooked spaghetti length” sorting algorithm: gravity. Hold them in your fist vertically, let them gently fall to a flat surface. Sorted.
1 comments

Spaghetti length is made visible (quickly comparable), but it's still not sorted.
Dropping spaghetti is an O(1) operation. Once that's done there's a straightforward O(N) sort by removing noodles in the order that they're intersected by horizontal plane descending from max_noodle_length to the table.
Assuming that the spaghetti is being held in such a way that longer pieces hit the surface first. If the pieces are being held at random points, or such that the bottoms line up rather than the tops, then this approach won't work.
You don't have to assume that. We can take each randomly oriented noodle and orient it correctly in O(1) as a preprocessing step. Since the complexity would be additive, the overall complexity remains O(N).
It is sorted chronologically