▲ | lukaslalinsky 3 days ago | ||||||||||||||||||||||||||||||||||
There is one sentence I really took out from the years at university, it was at a database implementation course: > If you have a trouble solving some problem, see if sorting the data first helps. I feel that sorting data is the ultimate computer science hack. Many, many, classes of problems turn into O(log n) problems, once you sort your input in some way. It might not be the most effective way of solving the problem, but it's often a fairly good one. So I'm really enjoying how good sorting algorithms are getting and how despite the O complexity remains mostly the same, the real computing efficiency is improving significantly. | |||||||||||||||||||||||||||||||||||
▲ | boothby 2 days ago | parent | next [-] | ||||||||||||||||||||||||||||||||||
It's funny because the opposite is often true as well: if you're having trouble solving a problem quickly, randomize the data and try again. | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
▲ | Imnimo 2 days ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||
Just be careful you aren't doing the classic, "my linear regression works way better when I independently sort the inputs and targets"! | |||||||||||||||||||||||||||||||||||
▲ | danielmarkbruce 2 days ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||
Also, "shove it in a dictionary" works frequently too.... basically "organize the data in some way" is often the answer. | |||||||||||||||||||||||||||||||||||
▲ | RyanHamilton 2 days ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||
Similar to you, based on years with databases I saw sorting as a huge advantage and often performed this step as part of optimizing any data access. I've tended to see the same pattern of problems over the last 15 years. Imagine my surprise when I read a blog post that showed not perfectly sorting your data could often result in faster overall result time for a wider range of queries. Duckdb: https://duckdb.org/2025/06/06/advanced-sorting-for-fast-sele... continues to surprise me with novel improved approaches to problems I've worked on for years. | |||||||||||||||||||||||||||||||||||
▲ | TuxSH 2 days ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||
> Many, many, classes of problems turn into O(log n) problems, once you sort your input in some way. It might not be the most effective way of solving the problem, but it's often a fairly good one. As a corollary, you can use binary search+linear interpolation as a fast way to approximate a strictly monotonic function, knowing its reciprocal, over a limited sets of outputs (e.g. n -> floor(255 * n^(1/2.2) + 0.5) for n in 0..255). You also get to work on bit_cast<s32>(...) as an optimization when the targeted FPU doesn't have conditional move instructions. | |||||||||||||||||||||||||||||||||||
▲ | throwaway81523 2 days ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||
I spent many years as a programmer somehow avoiding ever doing much with databases, since most problems that seemed to want databases could instead be solved using sorting batch-collected data. | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
▲ | foxyv a day ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||
I find that my best bet is to always add a B-Tree. Indexes are the best. Searching on a sorted column is nice, but nowhere near as fast as a nice B-Tree. | |||||||||||||||||||||||||||||||||||
▲ | wizardforhire 2 days ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||
Side note: this works great for fermions as well… To save the densest among you the oh so tedious task of extrapolation here are a some anecdotal examples. Dishwasher: Sort your dishes when you pull them out. Cut your walking time to the minimal possible steps, think of this like accessing cache data. Enjoy the now painless benefit of constantly clean dishes and kitchen. Short story: Some friends had a geodesic dome company. I’d get brought out to do setup when they were really busy. These Domes had a lot of heavy metal pipes of different and specific lengths. Its hot, it’s outside, its heavy and tedious… pipes would invariably be in a giant pile on a pallet… caught another friend doing bubble sort… the 56’ dome went up in record time with the two of us. More meta-hierarchical: End of life, parents on cusp of hoarding. Trauma combined with sentimentality manifests as projecting value on to items. Items pile up, life becomes unmanageable, think of this like running out of ram. Solution: be present, calm and patient. Help sort the memories and slowly help sort the items. Word of warning this is NP-hard-af… eventually they will get out of it and the life for them and you will dramatically improve. Further reading: https://knolling.org/what-is-knolling | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
▲ | mbroncano 2 days ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||
On a side note, some languages still refer to computers as ‘sorting machines’ or just ‘sorters’ | |||||||||||||||||||||||||||||||||||
▲ | natmaka 3 days ago | parent | prev [-] | ||||||||||||||||||||||||||||||||||
... and it many cases comes at a very low cost as quite often an index enabling to satisfy the usual "quickly find something" standard need exists, and most of them let us immediately obtain a sorted list. |