
Interesting but lesser known data structures - mak120
http://stackoverflow.com/q/500607/125382
======
ominous_prime
I feel like there isn't a good excuse for programmers to not know about a lot
of these structures. Yes, some of the examples are somewhat unknown (I didn't
know about the 2008 paper on "Left-Leaning Red-Black Trees" for example), but
many of these are something that would be at least mentioned in basic college
algorithms or data-structures courses. (I have a feeling the voting is skewing
my perception, and people are voting up what they've heard of and _think_ are
lesser known, and ignoring what they don't recognize at all).

I don't have a CS degree, nor am I solely a programmer, but I make sure I'm
aware of the underlying fundamentals of my profession. Even without taking
courses, one could easily take some time to read through the related wikipedia
articles - <http://en.wikipedia.org/wiki/List_of_data_structures>

P.S. I was trying to think up a good analogy to another technical trade, but I
can't think of one where you can be completely unqualified, and work without
licensing or certification.

~~~
Trey-Jackson
IMO, 99.9% of the time you don't need the more obscure data structures. And I
speak from experience working in companies on software requiring high
performance (runs taking 6 hours to two days are not uncommon).

That said, I was disappointed nobody had added the corner stitched data
structure - I found that to be a very intriguing idea (and in my world, it
turned out to be very useful).

~~~
ominous_prime
> IMO, 99.9% of the time you don't need the more obscure data structures

Absolutely, and familiarity with these data structures is what's required to
prevent these mistakes. I think a good understanding of these is more likely
to prevent one from using them, or in some cases, "inventing" them.

~~~
earino
_huge_ point. Nothing like seeing someone hand-implement (poorly) a balanced
tree.. and usually be very proud of it.

------
limist
Previously on HN: <http://news.ycombinator.com/item?id=1370847>

Certainly worth re-thinking nonetheless.

------
silentbicycle
Also: binary decision diagrams (BDDs), Prolog's difference lists, and the
persistent variants of common data structures. I like skip lists, too, though
they seem to be fairly well-known among programmers who don't just naively use
linked lists and generic hash tables for everything.

~~~
gwern
BDDs are already on there (I'd never heard of them before Knuth's fasicle, but
I guess he's sort of popularized them), as are a lot of persistent variants.

------
EMRo
Noob question: I hacked together my little mobile website and am looking to
cut down on search time for a "similar search" I built.

Short Description: Each "unit" has x attributes in the form of strings (tags).
Searching queries a database using a standard mysql regexp search for each tag
across all "units" and sorts responses by # of tags matching Desc.

I know this isn't StackOverflow so this isn't really a tech question. What I
want to know is if the problem is just that I'm a noob (just learned to
code/do web development in the past few months) and need to learn more about
data structures or if that's just the nature of php/mysql regexp queries (if
its a database structure issue, let's not even get into it lol)

~~~
T-R
You probably got downvoted for being off-topic - it'd be better to ask that
kind of question on Stack Overflow. Leave out the subjective "is it because
I'm a noob?" parts, and stick with the more objective "is there a better way
to do this?", and you'll probably be able to figure out from that where any
holes in your knowledge/experience might be.

~~~
EMRo
I appreciate the constructive response. I'm going to do that. Just joined this
community so just learning the rules now. Thanks.

------
SeanDav
Not sure one could call it a data structure but who remembers the so-called
Sneaker Network or Tackie Network, which consisted of someone copying
information onto a disk and physically walking to the other machine to copy
the information. Networks were so slow/buggy that it was often quicker to
transmit information using this "data structure"

~~~
SeanDav
Yes the Floppy disk is the Data Structure, which is interesting in itself, but
in order for this data structure to work it must be both loosely and tightly
coupled to the transport layer....

edit: To the downvoters - is a sense of humour not allowed on HN?

~~~
silentbicycle
If you're going to try to be funny, at least include it as part of an
otherwise worthwhile comment, otherwise it just adds noise to the discussion
(and encourages more of same). I know HN seems kind of neurotic about this,
but we're trying really hard to keep away trite "first post", "[citation
needed]", etc. comments, and given HN's age, it actually seems to work.

