Clay Breshears

Dr. Dobb's Bloggers

BubbleSort Won't Leave a Bathtub Ring

March 13, 2012

With the serial and task decomposition algorithms, each character got to pass over the entire collection of books. If, after running through the shelf, Duncan realized that he did not perform any exchanges, he set a flag. All the other characters eventually checked the flag and knew that their work was done. Under the data decomposition model, since no character sees the entire collection of data, I need to implement some way for each character to know whether any other character performed an exchange.

One method would be for each character to send a signal that all others can hear if they had performed at least one exchange. Since sound carries well underwater and through the hull of a submarine, I imagine placing a hammer at the end of each book shelf section. If an exchange was made, whenever a character reached the end of their section, they would strike the hull to let everyone know. If the signal is heard, all characters go back to the start of their book section and start another pass. If no signal is heard, then it is known that all characters had no exchanges and the data is in sorted order.

If you've been paying even a slight amount of attention as you read this, you can probably see the small complication with my signal scheme. How long do characters wait for the signal before they declare the whole bookshelf sorted and stop working? If there is one character slower than all others (or, worse, if characters are unpredictably afflicted with slower sorting from one pass to another), is the lack of signal due to the fact that the slow character hasn't reached the end of her section or that there were no exchanges across the entire shelf? Clearly, implementing this signal scheme will require some additional coordination to be sure that each character has completed a full pass through their section before listening for the hammer ping signal, or lack thereof.

One other facet to this problem we can consider is that the higher indexed elements of the array are settled after each complete pass through the data. As the sort proceeds, those characters in the latter sections will soon be passing through their books but not doing any local exchanges and there will be no new books to create the possibility of new exchanges. Could I develop a way to redraw and redistribute the sections as the algorithm goes on such that I keep the most characters doing some useful sorting of books? Probably. However, that's something I will leave to you the reader to pursue if you're interested.

The next post will have my implementation of a data decomposition version of Bubblesort. Between now and then, ponder how to coordinate threads to know when all others have completed a pass through their assigned sections.

Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Best of the Web

First C Compiler Now on Github

The earliest known C compiler by the legendary Dennis Ritchie has been published on the repository.

Quick Read

HTML5 Mobile Development: Seven Good Ideas (and Three Bad Ones)

HTML5 Mobile Development: Seven Good Ideas (and Three Bad Ones)

Quick Read

Building Bare Metal ARM Systems with GNU

All you need to know to get up and running... and programming on ARM

Quick Read

Amazon's Vogels Challenges IT: Rethink App Dev

Amazon Web Services CTO says promised land of cloud computing requires a new generation of applications that follow different principles.

Quick Read

How to Select a PaaS Partner

Eventually, the vast majority of Web applications will run on a platform-as-a-service, or PaaS, vendor's infrastructure. To help sort out the options, we sent out a matrix with more than 70 decision points to a variety of PaaS providers.

Quick Read


More "Best of the Web" >>



Video