ディストリビューションとマーケティング.
対応プラットフォーム.
順番は公式サイトに従う。
特徴.
テキストブラウザでありながら、タブブラウジング機能を備え、マウスによる操作、テーブル、フレームの描写などにも対応。また画像ファイルのインライン表示にも対応している。
バケットソート
概念.
安定ソートを実現するためには、同じバケツに入っているデータは入れたときと同じ順序で取り出す必要がある。順序が保存されない場合は、ソートはできるが、安定ソートではなくなる。後述するように基数ソートと組み合わせて使うためには、安定ソートになっている必要がある。
実装.
もうひとつは、いったん整列対象のデータを走査して値ごとの出現回数を数えておき、それに応じてひとつの配列の中を値ごとに分割する方法である。
たとえば以下の入力が与えられたとする。
昇順にソートした結果は以下のようになるはずである。
Javaによるサンプルコードは以下のようになる。
/**
 /** 値ごとの出現回数 */
 /** ソート後配列における値ごとの開始位置 */
 /** ループ制御用 */
 /* 出現回数を数える */ 
 /* 開始位置計算 */
 /* ソート処理 */
バケットソートの分割統治.
この時、各バケツの中身は別ソートアルゴリズムでソートしてやるか、再度バケットソートを適用する必要がある。
利点と欠点.
計算量の種明かしは「バケットソートの分割統治」の項で行ったとおりで、利点とはなっていない。
比較を行なわずにソートできる点は利点となる。
しかしながら、その裏返しとして、ソート対象の値のモデルに合わせてプログラムを書く必要が生じてしまう。
スリープソート.
「全要素の最大値×スリープさせる単位時間」で実際にソートできてしまう。それが役に立つ事例は例題程度であろう。
面白いジョークであるが、実際のコンピュータシステムでは、起動したプロセスが意図した時間にピタリと正確に終了するという保証はない。すなわち、非同期に複数プロセスを起動したとき、混雑やOSの制御のために値が返ってくる順序が意図した時刻にこないことがあるのはもちろん、ソートで期待する順序とは異なった順序で返ってくる恐れさえある。したがって、デモや冗談ならともかく、実用には絶対使ってはいけない。