【アルゴリズム】挿入ソートをC#を使って実装する。

  • 2012.10.02 Tuesday
  • 22:44
JUGEMテーマ:コンピュータ

以前に書いた挿入ソートが間違えたままだったので、改めて書きました。今回はあってると思います。

 public static void Sort(int[] arrary)
{
    for (int i = 1; i < arrary.Length; i++)
    {
        int tmp = arrary[i];
        if (arrary[i - 1] > tmp)
        {
            int j = i;
            for (; j > 0 && arrary[j - 1] > tmp ; j--)
            {
                arrary[j] = arrary[j - 1];
            }
            arrary[j] = tmp;
        }
    }
}

単なる感想なのですが、個人的には挿入ソートは非常にわかりにくいアルゴリズムだと思います。その理由の一つが配列のデータ構造が手続きを面倒にしているからです。

具体的には下記の部分

 for (; j > 0 && arrary[j - 1] > tmp ; j--)
{
    arrary[j] = arrary[j - 1];
}

配列の各要素を一つずつシフトさせているところです。これ線形リストであれば、すんなりと挿入できるわけですが、配列なのでひとつひとつ取り出しては一つ後の要素に移動させているわけです。こういうのは直感的でない印象を受けます。あと、本当に印象なのですが、「これでうまくソートできるの?」と、不安になってしまいます。本当に個人的な感想なんですが・・・。

これも絵にしたらわかりやすそうだなーって思いますが、機会があれば・・・。

※配列に対してシフト演算子とかあったら「おもしろい」かも(笑)何かの言語ではあったようななかったような・・・。

---------------------------
(追記)
・このソート法を、「ふるい分けの手法」「沈殿の手法」と呼ぶこともあるらしいです。
コメント
コメントする








    
この記事のトラックバックURL
トラックバック

calendar

S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 
<< November 2018 >>

あわせて読みたい

あわせて読みたいブログパーツ

selected entries

categories

archives

recent comment

  • 【キーボード】6年前のRealForceを復活させることはできる!?その3
    art55 (05/22)
  • 【キーボード】6年前のRealForceを復活させることはできる!?その3
    分解大好き (05/18)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    art55 (02/04)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    Gen (02/04)
  • 【キーボード】RealForce が壊れて帰ってきた。
    art55 (04/29)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    art55 (02/23)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    かるあ (02/22)
  • 【C#】Dictionaryの実装・データ構造・アルゴリズムを観察する。
    art55 (01/16)
  • 【C#】Dictionaryの実装・データ構造・アルゴリズムを観察する。
    karuakun (01/16)
  • 【NetOffice】【Excel】死なないExcelプロセスをKillする。
    art55 (12/05)

recent trackback

recommend

recommend

recommend

C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION)
C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION) (JUGEMレビュー »)
Sasha Goldshtein,Dima Zurbalev,Ido Flatow,サシャ・ゴルドシュタイン,ディマ・ズルバレフ,イド・フラトー

recommend

ろんりと集合
ろんりと集合 (JUGEMレビュー »)
中内 伸光
とてもわかりやすいです。

recommend

recommend

シャノン・ノイマン・ディジタル世界
シャノン・ノイマン・ディジタル世界 (JUGEMレビュー »)
市川 忠男
4章がリレーショナルデータベースな内容になってます。ページ数があまりありませんが、ポイントがものすごく的確にまとまっていて、感動します。

recommend

recommend

東プレ Realforce91UBK-S 静音キーボード 静電容量無接点方式 変荷重 ブラック NG01BS
東プレ Realforce91UBK-S 静音キーボード 静電容量無接点方式 変荷重 ブラック NG01BS (JUGEMレビュー »)

テンキーレス、静音のRealForce91UBK-S。スコスコ感がたまらなく気持ちいいです。家と会社で2台持ってます。

recommend

recommend

プログラミング.NET Framework 第4版 (プログラミングシリーズ)
プログラミング.NET Framework 第4版 (プログラミングシリーズ) (JUGEMレビュー »)
Jeffrey Richter
発売予定美 2013年10月10日。.NET Frameworkとお付き合いする人のバイブルですね。

recommend

recommend

キャット・シッターの君に。
キャット・シッターの君に。 (JUGEMレビュー »)
喜多嶋 隆
私のイラストレータデビュー本です。

recommend

Essential .NET ― 共通言語ランタイムの本質
Essential .NET ― 共通言語ランタイムの本質 (JUGEMレビュー »)
ドン・ボックス,クリス・セルズ,Don Box,Chris Sells,吉松 史彰

links

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM