)Links to an external site. by Stefan Nilsson at DrDobbs.com. Post a response giving your thoughts on what you read in this article. In addition to your response post a constructive response to at least two other posts.
URL: http://www.drdobbs.com/architecture-and-design/the-fastest-sorting-algorithm/184404062 (Links to an external site.)Links to an external site.
you can choose any two of the three comments that i given to response.
I found the radix sorting piece of this article the most interesting. To complete this sort, the number is converted to a different base. In this case, the number is converted to binary, or base 2. After conversion, this sorting algorithm splits the 32-bit binary number in half. It then assigns the numbers to a table sorted by their first half (high) bits. The algorithm then iterates through the table and creates a second table sorted by the number’s second half (low) bits. This table is created by moving elements from the first table’s high list. It the high bucket contains more than one element, the least of the elements are left behind.
In binary, the leftmost numbers are highest. In figure 1, the highest number line 000 can hold is 7 or 000111. The highest number 001 can hold is 15 or 001111 and so on. This first round of sorting breaks each number into buckets of eight. The second, low bucket, then groups each element by a single digit. For instance, 000 is 0 and 010 is 3. Once the low table is completed, the items from the low table are then moved back to the high table from lowest (000) to highest (111). When the migration is complete, the full list is sorted.
First off, I’d like to say this article was written on April Fools Day 17 years ago, so it’s legitimacy is shaky at best.
I kid. But I have to admit I struggled with this one. The concept of n log log n is a bit new to me. This speed was mentioned before in a lecture I had seen as a speed possible with a variation of shell sort under certain conditions. This appears to be a similar situation. A constrained example using a particular weapon(algorithm(s)) on a specific monster(data set of integers).
Stefan begins talking about radix (not Raditz (Links to an external site.)Links to an external site.–which is what my sleepy/mushy/lizard brain kept reading this evening) sort, which I hadn’t heard of until today. After a bit of research, it appears this is a popular algorithm for sorting mail.
The author’s super fast integer sorting method has two phases: radix and merge sort. The radix piece reduces the size of the elements. Then the merge sort(a particular flavor called Bitonic) sorts these new buckets of data.
One tip Nilsson mentions was also new to me. It’s a way to prevent using expensive memory initialization by using double bookkeeping with an array to keep track of active memory positions.
This website (Links to an external site.)Links to an external site. helped a bit with understanding the radix and Bitonic methods.
I definitely struggled trying to understand the concepts in this article. I am amazed at how complicated sorting numbers can get. At first, it seems that sorting a list of numbers should be simple. I suppose the problem is that I generally think of sorting small lists of numbers. Most of the program examples that I have completed from textbooks have always involved small lists and arrays. With a small array, the speed of the sort is not really a problem. However, when a list contains millions of numbers, the speed of the sort becomes critical.
The article describes combining a radix sort with a mergesort. To me, it seemed counterintuitive that combining two search algorithms would produce a faster result than using only one sort algorithm. The article goes on to explain how these two algorithms can indeed produce faster results. Stefan Nillson explains that the sort is completed in two phases, first using a radix sort, then using a mergesort. Nillson shows that the radix sort can reduce the size of the individual numbers in the list. These shortened numbers are then easier for the mergesort to handle.
I looked at some radix sort videos on YouTube, but this simple animation really helped me get the concept.https://www.youtube.com/watch?v=xuU-DS_5Z4g (Links to an external site.)Links to an external site.