經(jīng)典排序算法之冒泡排序(Bubble sort)代碼
經(jīng)典排序算法 - 冒泡排序Bubble sort
原理是臨近的數(shù)字兩兩進(jìn)行比較,按照從小到大或者從大到小的順序進(jìn)行交換,
這樣一趟過去后,最大或最小的數(shù)字被交換到了最后一位,
然后再從頭開始進(jìn)行兩兩比較交換,直到倒數(shù)第二位時結(jié)束,其余類似看例子
例子為從小到大排序,
原始待排序數(shù)組| 6 | 2 | 4 | 1 | 5 | 9 |
第一趟排序(外循環(huán))
第一次兩兩比較6 > 2交換(內(nèi)循環(huán))
交換前狀態(tài)| 6 | 2 | 4 | 1 | 5 | 9 |
交換后狀態(tài)| 2 | 6 | 4 | 1 | 5 | 9 |
第二次兩兩比較,6 > 4交換
交換前狀態(tài)| 2 | 6 | 4 | 1 | 5 | 9 |
交換后狀態(tài)| 2 | 4 | 6 | 1 | 5 | 9 |
第三次兩兩比較,6 > 1交換
交換前狀態(tài)| 2 | 4 | 6 | 1 | 5 | 9 |
交換后狀態(tài)| 2 | 4 | 1 | 6 | 5 | 9 |
第四次兩兩比較,6 > 5交換
交換前狀態(tài)| 2 | 4 | 1 | 6 | 5 | 9 |
交換后狀態(tài)| 2 | 4 | 1 | 5 | 6 | 9 |
第五次兩兩比較,6 < 9不交換
交換前狀態(tài)| 2 | 4 | 1 | 5 | 6 | 9 |
交換后狀態(tài)| 2 | 4 | 1 | 5 | 6 | 9 |
第二趟排序(外循環(huán))
第一次兩兩比較2 < 4不交換
交換前狀態(tài)| 2 | 4 | 1 | 5 | 6 | 9 |
交換后狀態(tài)| 2 | 4 | 1 | 5 | 6 | 9 |
第二次兩兩比較,4 > 1交換
交換前狀態(tài)| 2 | 4 | 1 | 5 | 6 | 9 |
交換后狀態(tài)| 2 | 1 | 4 | 5 | 6 | 9 |
第三次兩兩比較,4 < 5不交換
交換前狀態(tài)| 2 | 1 | 4 | 5 | 6 | 9 |
交換后狀態(tài)| 2 | 1 | 4 | 5 | 6 | 9 |
第四次兩兩比較,5 < 6不交換
交換前狀態(tài)| 2 | 1 | 4 | 5 | 6 | 9 |
交換后狀態(tài)| 2 | 1 | 4 | 5 | 6 | 9 |
第三趟排序(外循環(huán))
第一次兩兩比較2 > 1交換
交換后狀態(tài)| 2 | 1 | 4 | 5 | 6 | 9 |
交換后狀態(tài)| 1 | 2 | 4 | 5 | 6 | 9 |
第二次兩兩比較,2 < 4不交換
交換后狀態(tài)| 1 | 2 | 4 | 5 | 6 | 9 |
交換后狀態(tài)| 1 | 2 | 4 | 5 | 6 | 9 |
第三次兩兩比較,4 < 5不交換
交換后狀態(tài)| 1 | 2 | 4 | 5 | 6 | 9 |
交換后狀態(tài)| 1 | 2 | 4 | 5 | 6 | 9 |
第四趟排序(外循環(huán))無交換
第五趟排序(外循環(huán))無交換
排序完畢,輸出最終結(jié)果1 2 4 5 6 9
代碼僅供參考
static void bubble_sort(int[] unsorted) { for (int i = 0; i < unsorted.Length; i++) { for (int j = i; j < unsorted.Length; j++) { if (unsorted[i] > unsorted[j]) { int temp = unsorted[i]; unsorted[i] = unsorted[j]; unsorted[j] = temp; } } } } static void Main(string[] args) { int[] x = { 6, 2, 4, 1, 5, 9 }; bubble_sort(x); foreach (var item in x) { Console.WriteLine(item); } Console.ReadLine(); }
冒泡排序動畫演示
以上所述是小編給大家介紹的經(jīng)典排序算法之冒泡排序(Bubble sort)的代碼,希望對大家有所幫助!
相關(guān)文章
C# Dynamic關(guān)鍵字之:調(diào)用屬性、方法、字段的實(shí)現(xiàn)方法
本篇文章是對C#中調(diào)用屬性、方法、字段的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C#使用SQL DataReader訪問數(shù)據(jù)的優(yōu)點(diǎn)和實(shí)例
今天小編就為大家分享一篇關(guān)于C#使用SQL DataReader訪問數(shù)據(jù)的優(yōu)點(diǎn)和實(shí)例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10C# 創(chuàng)建MDB數(shù)據(jù)庫、并存放表格數(shù)據(jù)的案例
這篇文章主要介紹了C# 創(chuàng)建MDB數(shù)據(jù)庫、并存放表格數(shù)據(jù)的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01基于不要返回null之EmptyFactory的應(yīng)用詳解
本篇文章對不要返回null之EmptyFactory進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05c#求范圍內(nèi)素?cái)?shù)的示例分享(c#求素?cái)?shù))
問題是判斷101-200之間有多少個素?cái)?shù),并輸出所有素?cái)?shù)。下面是使用C#解決這個問題的方法 ,需要的朋友可以參考下2014-03-03