Home [C# 筆記] Bubble Sort 冒泡排序
Post
Cancel

[C# 筆記] Bubble Sort 冒泡排序

冒泡排序 Bubble Sort

冒泡排序:就是將一個陣列中的元素,按照從大到小, 或者, 從小到大的順序進行排列。

解析

in[] nums={9,8,7,6,5,4,3,2,1,0}; => 0 1 2 3 4 5 6 7 8 9

第一個元素,跟後面的每一個元素進行做比較,只要前面大於後面的,就交換。

    
第一次比較:8765432109 交換9次i=0 j=9j=nums.Length-1-0j=nums.Length-1-i
第二次比較:7654321089 交換8次i=1 j=8j=nums.Length-1-1j=nums.Length-1-i
第三次比較:6543210789 交換7次i=2 j=7j=nums.Length-1-2j=nums.Length-1-i
第四次比較:5432106789 交換6次i=3 j=6j=nums.Length-1-3j=nums.Length-1-i
第五次比較:4321056789 交換5次i=4 j=5j=nums.Length-1-4j=nums.Length-1-i
第六次比較:3210456789 交換4次i=5 j=4j=nums.Length-1-5j=nums.Length-1-i
第七次比較:2103456789 交換3次i=6 j=3j=nums.Length-1-6j=nums.Length-1-i
第八次比較:1023456789 交換2次i=7 j=2j=nums.Length-1-7j=nums.Length-1-i
第九次比較:0123456789 交換1次i=8 j=1j=nums.Length-1-8j=nums.Length-1-i

nums[i]nums[nums.Length-1-i] 交換

找一下規律:

外循環:控制走幾趙(共9趙)
內循環:控制交換了幾次(nums.Length-1-i)

程式碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int[] nums = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };

//外循環:控制總共要比較幾次,走幾趙(nums.Length - 1)
for (int i = 0; i < nums.Length - 1; i++)
{
    //內循環:每走一次,要跟後面的元素交換幾次(nums.Length-1-i)
    for (int j = 0; j < nums.Length - 1 - i; j++)
    {
        //如果比後面的元素大,就交換
        if (nums[j] > nums[j + 1]) //如果是降序,就將大於改成小於
        {
            int temp = nums[j]; //最簡單的交換,就是使用第三方變數暫存
            nums[j] = nums[j + 1];
            nums[j + 1] = temp;
        }
    }
}
// 輸出看結果
for (int i = 0; i < nums.Length; i++) {
    Console.WriteLine(nums[i]);
}
Console.ReadKey();

如果是降序,就將大於改成小於

什麼時候會用到冒泡排序?
工作實務上不會用到,但面試的時候可能會考…XDD

一行搞定冒泡排序

升幕排序 Array.Sort()

1
2
int[] nums = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
Array.Sort(nums); //升幕排序

反轉排序 Array.Reverse()

Array.Reverse()不是降幕排序,它是反轉

1
2
3
int[] nums = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
Array.Sort(nums); //升幕排序
Array.Reverse(nums);//反轉排序

雖然在學得時候,都是學最難的,
但在用的時候,都是用最簡單的。
要是不明白,那就是最難的…
能理解了,才是學會了…

This post is licensed under CC BY 4.0 by the author.