C#選擇排序和氣泡排序
阿新 • • 發佈:2019-01-01
在上一篇文章中《演算法排序》中簡單介紹了選擇排序和氣泡排序,這次讓咱們緊接著上次的節奏繼續來學習這兩種排序。都說是萬事開頭難,其實有了充分的準備一點都不難了,在本文中,小編將要介紹演算法排序的圖形過程與程式碼。
選擇排序
圖形描述
過程描述
- 假設第i個數是最大;
- 第i個數與從i+1到n個數之間一次比較;
- 內迴圈中交換n-i次之後得到一輪結果;
核心程式碼
For i=1 to n-1 '外迴圈
For j=i+1 to n '內迴圈
If a(i)>a(j) then
a(i)=c
a(j)=a(i)
c=a(j)
氣泡排序
圖形描述
過程
- 大數上浮,小數沉底;
- 兩兩交換;
核心程式碼
For i=1 ton-1
For j=1 to n-i
If a(j)>a(j+1) then
a(i)=c
a(j)=a(i)
c=a(j)
程式碼展示
namespace 排序 { class 選擇排序 { static void Main(string[] args) { InsertionSort(); } ///<summary> ///選擇序法 ///</summary> private static void InsertionSort() { Console.WriteLine("選擇排序法"); int temp = 0; int[] arr = { 7, 1, 6, 3, 8, 2, 9, 4, 0, 5 }; Console.WriteLine("排序前的陣列:"); foreach (int item in arr) { Console.Write(item + ","); } Console.WriteLine(); var length = arr.Length; for (int i = 0; i < length - 1; i++) { for (int j = i + 1; j < length; j++) { if (arr[i] < arr[j]) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } //每次排序後陣列 PrintResult(arr); } Console.ReadKey(); } ///<summary> ///列印結果 ///</summary> ///<paramname="arr"></param> private static void PrintResult(IEnumerable<int> arr) { foreach (int item in arr) { Console.Write(item + ","); } Console.WriteLine(); } } }
namespace 排序 { class 冒泡 { static void Main(string[] args) { InsertionSort(); } ///<summary> ///冒泡序法 ///</summary> private static void InsertionSort() { Console.WriteLine("氣泡排序法"); int temp = 0; int[] arr = { 7, 1, 6, 3, 8, 2, 9, 4, 0, 5 }; Console.WriteLine("排序前的陣列:"); foreach (int item in arr) { Console.Write(item + ","); } Console.WriteLine(); var length = arr.Length; for (int i = length ; i >0; i--) { for (int j = 0; j < i-1; j++) { if (arr[j] < arr[j+1]) { temp = arr[j+1]; arr[j+1] = arr[j]; arr[j ] = temp; } } //每次排序後陣列 PrintResult(arr); } Console.ReadKey(); } ///<summary> ///列印結果 ///</summary> ///<paramname="arr"></param> private static void PrintResult(IEnumerable<int> arr) { foreach (int item in arr) { Console.Write(item + ","); } Console.WriteLine(); } } }
排序與總結
在學習排序的過程中,從老師教給我們知識只是老師的,並不是學生自己的,只有自己努力去實踐,才可以將知識掌握甚至於融會貫通。在本文中,小編針對演算法中比較簡短的兩種排序進行了講解,如果有什麼錯誤的地方,還請多多指教。