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)を描きます。 } } } }