Find yourself - Lemmy

Thief way is actually the best among all of these imo, in terms of readability and efficiency.
Not using thief is professional incompetence unless you’re doing something deeply cursed
Sometimes you need to minimize function calls in a tight loop, but otherwise yeah

If you’re optimizing that hard you should probably sort the data first anyway, but yeah, sometimes it’s absolutely called for. Not that I’ve actually needed that in my professional career, but then again I’ve never worked close enough to metal for it to actually matter.

That said, all of these are implemented as functions, so they’re already costing the function call anyway…