<html>
  <head>
    <title>The Sorting Algorithm Demo (1.1)</title>
  </head>
  <body>
      <h1>The Sorting Algorithm Demo (1.1)</h1>
      <hr>

      <table cols=3 width="340">
      <tr>
      <th><strong>Bubble Sort</strong></th>
      <th><strong>Bidirectional Bubble Sort</strong></th>
      <th><strong>Quick Sort</strong></th>
      </tr>

      <tr>
      <th>
      <applet code=SortItem.class width=100 height=100><param name="alg" value="BubbleSort">alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."Your browser is completely ignoring the &lt;APPLET&gt; tag!</applet>  
      </th>
      <th>
      <applet code=SortItem.class width=100 height=100><param name="alg" value="BidirBubbleSort">alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."Your browser is completely ignoring the &lt;APPLET&gt; tag!</applet> 
      </th>
      <th>
      <applet code=SortItem.class width=100 height=100><param name="alg" value="QSort">alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."Your browser is completely ignoring the &lt;APPLET&gt; tag!</applet>
      </th>
      </tr>
      </table>


      <hr>
      <h2>The Sources</h2>
      <a href="SortItem.java">The applet.</a><br>
      <a href="SortAlgorithm.java">The "generic" sorting algorithm.</a><br>
      <a href="BidirBubbleSortAlgorithm.java">The Bi-directional Bubble Sort algorithm.</a><br>
      <a href="BubbleSortAlgorithm.java">The Bubble Sort algorithm.</a><br>
      <a href="QSortAlgorithm.java">The Quick Sort algorithm.</a>
  </body>
</html>

