The World of YouTube Bubble Sort Algorithm Dancing 68
theodp writes In addition to The Ghost of Steve Jobs, The Codecracker, a remix of 'The Nutcracker' performed by Silicon Valley's all-girl Castilleja School during Computer Science Education Week earlier this month featured a Bubble Sort Dance. Bubble Sort dancing, it turns out, is more popular than one might imagine. Search YouTube, for example, and you'll find students from the University of Rochester to Osmania University dancing to sort algorithms. Are you a fan of Hungarian folk-dancing? Well there's a very professionally-done Bubble Sort Dance for you! Indeed, well-meaning CS teachers are pushing kids to Bubble Sort Dance to hits like Beauty and a Beat, Roar, Gentleman, Heartbeat, Under the Sea, as well as other music.
Re: (Score:1)
i guess its similar to the way logarithms are taught where you spend like 3 days learning how to deal with random bases when only 2 are normally actually used.
and Bubble Sort actually has a defined endpoint unlike say Random Sort
Re: (Score:2)
Yep, Random Sort is subject to bad draws of randomness that cause it to randomly walk to a longer solution. A combo technique of random sort somewhat, then bubble sort is often effective.
Re: (Score:3)
Umm ... (+1, Funny) ... I hope?
Neither of those sorting algorithms is particularly good, but random sort (bogosort) is hilariously bad.
Re:Bogus algorithm (Score:5, Interesting)
A key part of all database systems is the fact that you can ask for a sort order without having to write a sort program. While simple sorts can move quickly, a bubble sort can move even faster. When you're dealing with a multimillion record table, this saves minutes and power per query.
Everybody develops Bubble Sort the same way, proving it's an eventual discovery that no longer qualifies for patents. Teaching it is a basic way of showing the programming language's loop terms and variable scopes, so it's an elementary program to write.
I guess this dance is reminding us that Bubble Sort can be applied to dating. If the girls rank themselves correctly, it takes a bunch of "go over there..." dates in order to get it right.
Re: (Score:2)
When you're dealing with a multimillion record table, this saves minutes and power per query.
What database are you using? Sqlite? OpenOffice Base?
Re: (Score:2)
MS Access.
It's not always the best program for databases, but it has the easiest to use UI. Visual Basic 6 and VBA are almost interchangeable.
Re:Bogus algorithm (Score:4, Insightful)
Hang on..
Are you seriously suggesting that bubble sort is useful for N in the millions?
Re: (Score:2)
But it's web scale! ;)
Re: (Score:1)
I think The New Guy confused Bubble Sort with Quicksort. When you have been out of academia for a while, it is easy to get the names mixed up.
In the modern server computing environment, it is extremely rare that anyone needs to choose a specific sort algorithm. It is far more important to know when and what to sort than it is to tweak the algorithm's details.
Re:Bogus algorithm (Score:4, Interesting)
No one in their right mind would implement quick sort to sort millions of database entries either though. They'd likely implement something like merge sort.
Re: (Score:3)
Well, the problem with QuickSort is that if you're unlucky with your pivot choice you can get O(n^2) runtime. The problem with MergeSort is that you have to copy the array, which, for n in the millions, could be an issue.
For such a case I would recommend heapsort or introsort (which is just "quicksort unless I'm getting unlucky, then I do heapsort instead").
HeapSort doesn't get enough love :(
Re:Bogus algorithm (Score:4, Interesting)
Re: (Score:1)
Mostly I just set up a weekly job to ALTER INDEX {index_name} ON {table_name} REBUILD. Overnight between Saturday and Sunday is usually a good time to do this.
How the DBMS gets that job done is Not My Problem(tm), just as long as it works.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
This is a great dilemma that database engines deal with. With all of the sorting programs possible, which is the one that will solve it the fastest? There's not much of a chance for figuring it out on the first pass... you'd have to sort the database using all the sorts to get times, and that's wasted work. Database engines have some logic to say which they should guess is right the first time, and then if the query is asked for again it can rely on cache or place only the new records into the list.
This is
Re:Bogus algorithm (Score:4, Insightful)
It entirely depends on the order of data in the database. If you know the data is already mostly sorted, then it can perform much better than other methods.
If data is mostly sorted why not insertion sort? (Score:1)
If I believe the data is going to already be mostly sorted why wouldn't I just use insertion sort?
Re: (Score:2)
Hang on..
Are you seriously suggesting that bubble sort is useful for N in the millions?
The GP must be the database guy they hired for the Russian stock market.
Re: (Score:2)
Re: (Score:1)
While I don't disagree with your overall point, if it's not obvious to a CS student why a bubble sort works after a moment of thought, they're in the wrong field.
Re:Bogus algorithm (Score:4, Insightful)
I agree on Bubb..I mean, BS. But Selection Sort is really only useful with big objects that you don't want to move much. These days everything's a Reference, so it doesn't matter so much. It makes for a really boring dance, too.
Insertion Sort is more useful in modern use cases. If something's "almost sorted" it's very quick.
Shell sort [wikipedia.org] might be even better. It's practically identical to Insertion Sort except only subsets of dancers would step out at one time. And, with a good gap sequence, it gets done much quicker than either of the above.
Re: (Score:2)
Shell sort was always my favorite in terms of elegance, IMO
Re:Bogus algorithm (Score:4, Interesting)
Re: (Score:3)
Teaching
Re:Bogus algorithm (Score:5, Insightful)
It's usually mentioned in CS courses because the first stage in introducing these classes is "think about sorting some numbers - how do you go about doing it", and generally Bubble Sort is the first formalisation that falls out of that. The fact that Selection Sort is the one that you think of is neither here nor there - most students come up with something looking like bubble sort.
Re: (Score:2)
Re: (Score:2)
It's usually mentioned in CS courses because the first stage in introducing these classes is "think about sorting some numbers - how do you go about doing it", and generally Bubble Sort is the first formalisation that falls out of that. The fact that Selection Sort is the one that you think of is neither here nor there - most students come up with something looking like bubble sort.
Most people get to insertion sort or bucket sort first, since those are the ones that arise naturally from sorting playing cards in respectively your hand or the whole deck on the table.
Re: (Score:2)
I teach both C and Data Structures. Bubble sort is for my C class where I am trying to make sure the students fully comprehend arrays (most of my students come from a non-existent programming background, and the school isn't sold on my teaching them Python as a first language just yet as apparently I am the only instructor who can use it meaningfully), how indexes work (getting them to reverse an array or a string doesn't quite seem to do it for about half of them), and my better students will have impleme
Re: (Score:1)
I don't understand why Bubble-Sort is even mentioned in CS courses. It is not immediately apparent to new students why repeatedly swapping adjacent items in this manner eventually results in a sorted list. With Selection-Sort on the other hand it is immediately clear why it works, and it is also faster than Bubble-Sort, and appropriate to use in simpler cases.
Bubble-Sort is a bogus algorithm and should not be mentioned nor taught to new students, and henceforth it should be shortened and known as BS, because that's exactly what it is.
The bubble sort algorithm is the easiest sorting method for most beginning computer science and programming students to comprehend. Next you will be suggesting they be taught the radix sort algorithm as their first assignment. It is the same nonsense I hear from supposedly experienced programmers when they claim BASIC is a terrible introductory language to teach basic programming concepts. The personal computer industry and much of modern software has been developed by hobbyist programmers who taught themse
Re: (Score:2)
...With Selection-Sort on the other hand it is immediately clear why it works, and it is also faster than Bubble-Sort, and appropriate to use in simpler cases.
Sure, but can the kids dance to it?
Call me conervative, but (Score:2)
I don't think we should be teaching our kids exponential running time O(n^2) algorithms. Randomized partitioned merge sort theta(n lg n). Sure, bubble sorts seem harmless today, it leads to criminal token rings.
Re:Call me conervative, but (Score:5, Informative)
I don't think we should be teaching our kids exponential running time O(n^2) algorithms.
Call me liberal, but I don't think we should be teaching our kids improper definitions for "exponential" *or* myths that O(n^2) algorithms like bubble sort are bad.
Quick: which is going to be faster to sort a list of 4 items, bubble sort or randomized partition merge sort? What's that you say? Proper algorithm selection requires more than knee-jerk application of platitudes? Exactly.
Re: (Score:2)
I would just skip the sort and do a linear search. As a matter of fact I *am* that lazy.
Re: (Score:3, Insightful)
Believe it or not, but bubble sort really is used in the real world, and not because of incompetence.
Now, maybe it isn't used for most cases, but it is far from being worthless. There are situations where it's really the most optimal algorithm to run, mostly where you are both space constrained (so can't afford the extra memory to allocate more than the list to be sorted), and when you want a low number of instructions to run (because there is no other algorithm which can be performed with as few instructio
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
You are correct. But there is a much more direct answer to defend Bubble Sort.
In the real world, i.e. on real hardware, bubble sort usually faster than other algorithms for small data sets. This is due to cache locality. A cache miss can mean the difference between 4 clock cycles vs. over 400 cycles, simply waiting for 4 little bytes to be read from RAM.
Cache misses are now the biggest problem for high performance programming. For instance, (good) video game programmers are very aware of this fact.
Re: (Score:1)
Working with these algorithms exercises the brain. The benefit is not just having the knowledge, but having the mental ability to understand a complex novel problem and implement an optimal solution to it.
I have interviewed many (and worked with a few) self-taught programmers who skipped all that "already solved" stuff and usually just hit the Internet to find ready-made solutions to their problems. There were many simple things they could do well. But once in a while a problem required the building of a
Re: (Score:3)
FYI O(n^2) is called quadratic complexity/time, O(n^3) is cubic, O(n^1) is linear and O(n^0) = O(1) is constant.
Exponential complexity would be O(c^n), where c is a constant.
Re: (Score:3)
They didn't even have a pole. Just what are they teaching women about how to make money these days?
I expect to be downmodded to the lowest level of turtles, but I think it is the idea of since today, dancing is quite popular, and that if they can get young girls to think that programmers dance all day, they might decide to become programmers.
I mean Beyonce is a programmer right?
Re: (Score:1)
OTOH Why not make a dance to visualize code?
Not bad, but... (Score:2)
I'll be impressed when they dance a quicksort to Flight of the Bumblebee.
Re: (Score:2)
I'll be impressed when they dance a quicksort to Flight of the Bumblebee.
Or a merge sort to Aaron Copland's "Fanfare of the Common Man".
More useful as a dance... (Score:4, Informative)
...than as a sorting algorithm!
Excellent visual explanation for non-geeks (Score:1)
I sent the Hungarian dance link to my Magyar uncle who is somewhat computer illiterate. This'll show him how binary can solve simple order.