C#,冒泡排序算法(Bubble Sort)的源代碼與數(shù)據(jù)可視化

排序算法是編程的基礎(chǔ)濒析。

常見的四種排序算法是:簡(jiǎn)單選擇排序正什、冒泡排序、插入排序和快速排序号杏。其中的快速排序的優(yōu)勢(shì)明顯婴氮,一般使用遞歸方式實(shí)現(xiàn)斯棒,但遇到數(shù)據(jù)量大的情況則無法適用。實(shí)際工程中一般使用“非遞歸”方式實(shí)現(xiàn)主经。本文搜集發(fā)布四種算法的源代碼及非遞歸快速排序的代碼荣暮。

冒泡排序(Bubble Sort)算法

思路:從左到右,將相鄰的進(jìn)行比較罩驻,若前面數(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 button2_Click(objectsender, EventArgs e)

???????{

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

???????????BubbleSort(RandArray());

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

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

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

???????}


???????///

???????///冒泡排序

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

???????///

???????///

???????public void BubbleSort(ref int[] dataArray)

???????{

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

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

??????????????? bool flag = true;

??????????????? for (int j = 0; j

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

??????????????????? if (dataArray[j] >dataArray[j + 1])

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

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

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

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

??????????????????????? flag = false;

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

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

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

??????????????? if (flag)

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

??????????????????? 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;

???????}


??? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市节吮,隨后出現(xiàn)的幾起案子抽高,更是在濱河造成了極大的恐慌,老刑警劉巖透绩,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翘骂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡帚豪,警方通過查閱死者的電腦和手機(jī)碳竟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狸臣,“玉大人莹桅,你說我怎么就攤上這事≈蛞啵” “怎么了统翩?”我有些...
    開封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)此洲。 經(jīng)常有香客問我,道長(zhǎng)委粉,這世上最難降的妖魔是什么呜师? 我笑而不...
    開封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮贾节,結(jié)果婚禮上汁汗,老公的妹妹穿的比我還像新娘。我一直安慰自己栗涂,他們只是感情好知牌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著斤程,像睡著了一般角寸。 火紅的嫁衣襯著肌膚如雪菩混。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天扁藕,我揣著相機(jī)與錄音沮峡,去河邊找鬼。 笑死亿柑,一個(gè)胖子當(dāng)著我的面吹牛邢疙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播望薄,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼疟游,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼胁赢!你這毒婦竟也來了勇凭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤缩赛,失蹤者是張志新(化名)和其女友劉穎采转,沒想到半個(gè)月后聪廉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡故慈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年板熊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片察绷。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡干签,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拆撼,到底是詐尸還是另有隱情容劳,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布闸度,位于F島的核電站竭贩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏莺禁。R本人自食惡果不足惜留量,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哟冬。 院中可真熱鬧楼熄,春花似錦、人聲如沸浩峡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翰灾。三九已至缕粹,卻和暖如春稚茅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背致开。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工峰锁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人双戳。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓虹蒋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親飒货。 傳聞我的和親對(duì)象是個(gè)殘疾皇子魄衅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

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