C#迹鹅,插入排序算法(Insert Sort Algorithm)的源代碼與數(shù)據(jù)可視化

排序算法是編程的基礎(chǔ)卦洽。


?常見的四種排序算法是:簡(jiǎn)單選擇排序、冒泡排序斜棚、插入排序和快速排序阀蒂。其中的快速排序的優(yōu)勢(shì)明顯,一般使用遞歸方式實(shí)現(xiàn)弟蚀,但遇到數(shù)據(jù)量大的情況則無法適用脂新。實(shí)際工程中一般使用“非遞歸”方式實(shí)現(xiàn)。本文搜集發(fā)布四種算法的源代碼及非遞歸快速排序的代碼粗梭。


插入排序(Insert Sort)算法

思路:從左到右争便,從第二元素開始,與它前面的數(shù)比較断医,找到小于它的數(shù)就將數(shù)值插入元素前面滞乙。

代碼改編自:C#實(shí)現(xiàn)常見排序算法_菜園赤子的博客-CSDN博客_c#排序算法


代碼:

using System;

using System.Text;

using System.Collections.Generic;

using System.Windows.Forms;


namespace WindowsFormsApp6

{

???public partial class Form1 : Form

??? {

???????Random rnd = new Random((int)DateTime.Now.Ticks);

???????List slides = new List();


???????public Form1()

???????{

???????????InitializeComponent();

???????}


???????private void Form1_Load(object sender, EventArgs e)

???????{

???????????this.Text = "C#,四種常見排序算法的可視化編程——北京聯(lián)高軟件開發(fā)有限公司";

???????????button1.Text = "選擇排序"; button1.Cursor = Cursors.Hand;

???????????button2.Text = "冒泡排序"; button2.Cursor = Cursors.Hand;

???????????button3.Text = "插入排序"; button3.Cursor = Cursors.Hand;

???????????button4.Text = "快速(遞歸)"; button4.Cursor = Cursors.Hand;

???????????button5.Text = "快速(非遞歸)"; button5.Cursor = Cursors.Hand;

???????????panel1.Dock = DockStyle.Top;

???????????panel2.Dock = DockStyle.Fill;

???????????webBrowser1.Navigate("http://www.315soft.com");

???????}


???????private int[] RandArray()

???????{

???????????int n = 20;

???????????int[] dataArray = new int[n];

???????????for (int i = 0; i < n; i++)

???????????{

??????????????? dataArray[i] = rnd.Next(20,100);

???????????}

???????????return dataArray;

???????}


???????private void button3_Click(object sender, EventArgs e)

???????{

???????????slides.Clear();

???????????InsertionSort(RandArray());

???????????loop = 0;

???????????timer1.Interval = 100;

???????????timer1.Enabled = true;

???????}


???????///

???????///插入排序

???????///改編自:https://blog.csdn.net/qq_36238093/article/details/97051032

???????///

???????///

???????public void InsertionSort(int[] dataArray)

???????{

???????????for (int i = 1; i < dataArray.Length; i++)

???????????{

??????????????? for (int j = i; j > 0; j--)

??????????????? {

?????????????????? ?if (dataArray[j] < dataArray[j - 1])

??????????????????? {

??????????????????????? int temp =dataArray[j];

??????????????????????? dataArray[j] =dataArray[j - 1];

??????????????????????? dataArray[j - 1] =temp;

??????????????????????? slides.Add(Slide(button3.Text,dataArray, i, j));

??????????????????? }

??????????????????? else

??????????????????? {

??????????????????????? break;

??????????????????? }

??????????????? }

???????????}

???????}


???????private string Slide(string title, int[] dataArray, int a, int b)

???????{

???????????StringBuilder sb = new StringBuilder();

???????????sb.AppendLine("");

???????????sb.AppendLine("");

???????????sb.AppendLine("");

???????????sb.AppendLine("");

???????????sb.AppendLine("td {vertical-align:bottom;text-align:center;font-size:12px; } ");

???????????sb.AppendLine(".bar { width:" + (int)((webBrowser1.Width -dataArray.Length * 11) / dataArray.Length) +"px;font-size:12px;border:solid 1px#FF6701;background-color:#F08080;text-align:center;border-radius:3px; }");

???????????sb.AppendLine("");

???????????sb.AppendLine("");

???????????sb.AppendLine("");

???????????sb.AppendLine("");

???????????sb.AppendLine("");

???????????sb.AppendLine("方法:" + title +

"</td>");

???????????sb.AppendLine("數(shù)據(jù):" +

dataArray.Length + "</td>");

???????????sb.AppendLine("步驟:[0]</td>");

???????????sb.AppendLine("");

???????????sb.AppendLine("");

???????????sb.AppendLine("
");

???????????sb.AppendLine("");

???????????sb.AppendLine("");

???????????for (int i = 0; i < dataArray.Length; i++)

???????????{

??????????????? if (i == a || i == b)

??????????????? {

???????????????????sb.AppendLine("" + dataArray[i] + "");

??????????????? }

??????????????? else

??????????????? {

???????????????????sb.AppendLine("" + dataArray[i] + "");

??????????????? }

???????????}


???????????sb.AppendLine("");

???????????sb.AppendLine("");

???????????sb.AppendLine("");

???????????sb.AppendLine("");

???????????return sb.ToString();

???????}



???????int loop = 0;


???????private void timer1_Tick(object sender, EventArgs e)

???????{

???????????if (loop < slides.Count + (3000 / timer1.Interval))

???????????{

??????????????? if (loop < slides.Count)

??????????????? {

??????????????????? webBrowser1.DocumentText =slides[loop].Replace("[0]", loop + " / " + slides.Count);

??????????????????? loop++;

??????????????????? return;

??????????????? }

??????????????? loop++;

??????????????? return;

???????????}

???????????loop = 0;

???????}


??? }

}


可下載五種排序算法源代碼學(xué)習(xí)鉴嗤。

五種排序算法源代碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末斩启,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子醉锅,更是在濱河造成了極大的恐慌兔簇,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,865評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異垄琐,居然都是意外死亡边酒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門狸窘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來墩朦,“玉大人,你說我怎么就攤上這事翻擒∶セ粒” “怎么了?”我有些...
    開封第一講書人閱讀 169,631評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵陋气,是天一觀的道長(zhǎng)劳吠。 經(jīng)常有香客問我,道長(zhǎng)巩趁,這世上最難降的妖魔是什么赴背? 我笑而不...
    開封第一講書人閱讀 60,199評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮晶渠,結(jié)果婚禮上凰荚,老公的妹妹穿的比我還像新娘。我一直安慰自己褒脯,他們只是感情好便瑟,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,196評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著番川,像睡著了一般到涂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上颁督,一...
    開封第一講書人閱讀 52,793評(píng)論 1 314
  • 那天践啄,我揣著相機(jī)與錄音,去河邊找鬼沉御。 笑死屿讽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吠裆。 我是一名探鬼主播伐谈,決...
    沈念sama閱讀 41,221評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼试疙!你這毒婦竟也來了诵棵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,174評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤祝旷,失蹤者是張志新(化名)和其女友劉穎履澳,沒想到半個(gè)月后嘶窄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,699評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡距贷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,770評(píng)論 3 343
  • 正文 我和宋清朗相戀三年柄冲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片储耐。...
    茶點(diǎn)故事閱讀 40,918評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖滨溉,靈堂內(nèi)的尸體忽然破棺而出什湘,到底是詐尸還是另有隱情,我是刑警寧澤晦攒,帶...
    沈念sama閱讀 36,573評(píng)論 5 351
  • 正文 年R本政府宣布闽撤,位于F島的核電站,受9級(jí)特大地震影響脯颜,放射性物質(zhì)發(fā)生泄漏哟旗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,255評(píng)論 3 336
  • 文/蒙蒙 一栋操、第九天 我趴在偏房一處隱蔽的房頂上張望闸餐。 院中可真熱鬧,春花似錦矾芙、人聲如沸舍沙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拂铡。三九已至,卻和暖如春葱绒,著一層夾襖步出監(jiān)牢的瞬間感帅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工地淀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留失球,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,364評(píng)論 3 379
  • 正文 我出身青樓帮毁,卻偏偏與公主長(zhǎng)得像她倘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子作箍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,926評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容