C#のソートアルゴリズムの可視化

B駅は最近、ソートアルゴリズムのアニメーションを見て、私は同様のプロジェクトを書きたいです。

グラフィックスを使用したプロジェクトはWinフォームフォーム上に描画します。エネルギーのレベルが制限されている、唯一のアルゴリズムに直接試みました。

システムを使用しました。
System.Collections.Genericを使用しました。
System.Drawingを使用しました。
System.Linqのを使用しました。
System.Textのを使用しました。
System.Threading.Tasksを使用しました。
System.Windows.Formsを使用しました。

名前空間ソート
{ 
    /// <要約> 
    ///排序算法
    /// </要約> 
    クラスプログラム
    { 
        静的な無効メイン(文字列[] args)
        { 
            FrmSort FRM =新しいFrmSort()。
            frm.ShowDialog(); 
        } 
    } 

    クラスFrmSort:フォーム
    { 
        民間のconst int型の長さ= 200。//数组宽度
        民間のconst int型の幅= 2; //绘图时每个柱子的宽度 
        民間のconst int型の高さ= 2; //場合、各列の延伸倍率の高さ

        パブリックFrmSort()
        { 
            this.BackColor = Color.White。
            this.Width = 600; 
            this.Height = 600; 
            this.Shown + =新しいSystem.EventHandler(this.Frm_Shown)。
        } 

        プライベートボイドFrm_Shown(オブジェクト送信者、のEventArgs電子)
        { 
            挿入()。
        } 

        //获得随机数组
        静的リスト<整数> GetRandomList()
        { 
            ランダムRND =新しいランダム(1)。
            一覧<整数> listOriginal =新しいリスト<整数>(); 
            以下のために(INT I = 1; I <(長さ+ 1); iは++) 
            {
                listOriginal.Add(i)を、
            }
            一覧<整数>リスト=新しいリスト<整数>(); 
            foreachの(listOriginalのintアイテム)
            { 
                list.Insert(rnd.Next(list.Count)、項目); 
            } 
            リストを返します。
        } 

        //绘图
        ます。private voidドロー(一覧<整数>リスト、int型開始、int型エンド、グラフィックスグラム、int型のxBase、int型yBase)
        { 
            { 
                ペンwhitePenは=新しいペン(Brushes.White、(終了-開始)*幅); 
                ポイントPOINT1 =新しいポイント(のxBase + *起動幅、yBase)。
                ポイント1ポイント2は=新しいポイント(のxBase + *幅、yBase + list.Count *高さを開始)。
                g.DrawLine(whitePen、POINT1、ポイント2)。
            } 

            ペンblackPen =新しいペン(Brushes.Black、幅)。
            (;;私は=終わりを<I ++はint型I =開始)のための
            { 
                ポイントPOINT1は=新しいポイント(たとえば、Xbase + iの幅が*、yBase)。
                ポイント1ポイント2 =新しいポイント(のxBase +私は幅、yBase +リスト[I] *高さ*)。
                g.DrawLine(blackPen、POINT1、ポイント2)。
            } 
        } 

        //直接插入
        プライベートボイド挿入()
        { 
            int型のxBase = 20。
            int型yBase = 20; 
            一覧<整数>リスト= GetRandomList(); 
            (グラフィックス・G = this.CreateGraphics())を使用して
                以下のために(int型I = 1; I <list.Count、私は++) 
            {
                (リスト0、list.Count - 1、G、のxBase、yBase)を描きます。
                { 
                    ための(int型J = - 1;(j> = 0)&&(リスト[J + 1] <リスト[J]); j--)
                    { 
                        int型のTEMP =リスト[J + 1]。
                        リスト[J + 1] =リスト[J]。
                        リスト[J] = TEMP; 
                        (リスト、J、J + 1、G、のxBase、yBase)を描きます。
                    } 
                } 
                (リスト0、list.Count - 1、G、のxBase、yBase)を描きます。
            } 
        } 
    } 
}

  

おすすめ

転載: www.cnblogs.com/aitong/p/10959613.html
おすすめ