0 基本 C# メモ 06: バブル ソート


序文

一般的に使用される並べ替え方法は 10 種類あります。

  • バブルソート;

  • 選択の並べ替え;

  • 挿入ソート;

  • ヒルソート。

  • マージソート;

  • クイックソート;

  • ヒープソート;

  • カウントソート;

  • バケットソート;

  • 基数ソート。

    今日はバブルソートについて話しましょう


1. バブルソートの原理

バブルソートとは、英語ではBubble Sortと呼ばれる比較的単純なソートアルゴリズムです。すべてのデータを走査し、毎回隣接する要素を比較します。順序があらかじめ決められた順序と一致しない場合は、位置が交換されます。このような走査では、最大または最小のデータが先頭に移動し、すべてのデータが順序どおりになるまで同じ操作が繰り返されます。
ここに画像の説明を挿入

2、プログラミングライティング

int[] arr = {
    
     1, 2, 4, 3, 28, 23, 12, 14, 99, 34, 55 };

arr.ToList().ForEach(x => Console.Write(x + " "));

for(int i = 0;i<arr.Length-1;i++)
{
    
    
    Console.WriteLine();
    
    Console.WriteLine("===========================================");
    for (int k = arr.Length - 1; k > i; k--)
    {
    
    
        Console.Write($"第{
      
      arr.Length - k}次");
        if (arr[k] < arr[k - 1])
        {
    
    
            int temp = arr[k];
            arr[k] = arr[k - 1];
            arr[k - 1] = temp;
        }
        arr.ToList().ForEach(x => Console.Write(x + " "));
        Console.WriteLine();
    }
    Console.WriteLine("===========================================");
    Console.Write($"第{
      
      i+1}轮:");
    arr.ToList().ForEach(x => Console.Write(x + " "));
}
Console.WriteLine();
arr.ToList().ForEach(x => Console.Write(x + " "));

印刷結果

1 2 4 3 28 23 12 14 99 34 55
===========================================1:1 2 4 3 28 23 12 14 99 34 552:1 2 4 3 28 23 12 14 34 99 553:1 2 4 3 28 23 12 14 34 99 554:1 2 4 3 28 23 12 14 34 99 555:1 2 4 3 28 12 23 14 34 99 556:1 2 4 3 12 28 23 14 34 99 557:1 2 4 3 12 28 23 14 34 99 558:1 2 3 4 12 28 23 14 34 99 559:1 2 3 4 12 28 23 14 34 99 5510:1 2 3 4 12 28 23 14 34 99 55
===========================================1:1 2 3 4 12 28 23 14 34 99 55
===========================================1:1 2 3 4 12 28 23 14 34 55 992:1 2 3 4 12 28 23 14 34 55 993:1 2 3 4 12 28 23 14 34 55 994:1 2 3 4 12 28 14 23 34 55 995:1 2 3 4 12 14 28 23 34 55 996:1 2 3 4 12 14 28 23 34 55 997:1 2 3 4 12 14 28 23 34 55 998:1 2 3 4 12 14 28 23 34 55 999:1 2 3 4 12 14 28 23 34 55 99
===========================================2:1 2 3 4 12 14 28 23 34 55 99
===========================================1:1 2 3 4 12 14 28 23 34 55 992:1 2 3 4 12 14 28 23 34 55 993:1 2 3 4 12 14 28 23 34 55 994:1 2 3 4 12 14 23 28 34 55 995:1 2 3 4 12 14 23 28 34 55 996:1 2 3 4 12 14 23 28 34 55 997:1 2 3 4 12 14 23 28 34 55 998:1 2 3 4 12 14 23 28 34 55 99
===========================================3:1 2 3 4 12 14 23 28 34 55 99
===========================================1:1 2 3 4 12 14 23 28 34 55 992:1 2 3 4 12 14 23 28 34 55 993:1 2 3 4 12 14 23 28 34 55 994:1 2 3 4 12 14 23 28 34 55 995:1 2 3 4 12 14 23 28 34 55 996:1 2 3 4 12 14 23 28 34 55 997:1 2 3 4 12 14 23 28 34 55 99
===========================================4:1 2 3 4 12 14 23 28 34 55 99
===========================================1:1 2 3 4 12 14 23 28 34 55 992:1 2 3 4 12 14 23 28 34 55 993:1 2 3 4 12 14 23 28 34 55 994:1 2 3 4 12 14 23 28 34 55 995:1 2 3 4 12 14 23 28 34 55 996:1 2 3 4 12 14 23 28 34 55 99
===========================================5:1 2 3 4 12 14 23 28 34 55 99
===========================================1:1 2 3 4 12 14 23 28 34 55 992:1 2 3 4 12 14 23 28 34 55 993:1 2 3 4 12 14 23 28 34 55 994:1 2 3 4 12 14 23 28 34 55 995:1 2 3 4 12 14 23 28 34 55 99
===========================================6:1 2 3 4 12 14 23 28 34 55 99
===========================================1:1 2 3 4 12 14 23 28 34 55 992:1 2 3 4 12 14 23 28 34 55 993:1 2 3 4 12 14 23 28 34 55 994:1 2 3 4 12 14 23 28 34 55 99
===========================================7:1 2 3 4 12 14 23 28 34 55 99
===========================================1:1 2 3 4 12 14 23 28 34 55 992:1 2 3 4 12 14 23 28 34 55 993:1 2 3 4 12 14 23 28 34 55 99
===========================================8:1 2 3 4 12 14 23 28 34 55 99
===========================================1:1 2 3 4 12 14 23 28 34 55 992:1 2 3 4 12 14 23 28 34 55 99
===========================================9:1 2 3 4 12 14 23 28 34 55 99
===========================================1:1 2 3 4 12 14 23 28 34 55 99
===========================================10:1 2 3 4 12 14 23 28 34 55 99
1 2 3 4 12 14 23 28 34 55 99

要約する

プロパティ: 1. 時間計算量: O(n2) 2. 空間計算量: O(1) 3. 安定した並べ替え 4. インプレース並べ替え

バブルソートの最適化

if (arr == null || arr.length < 2) {
    
    
    return arr;
}
int n = arr.length;
for (int i = 0; i < n; i++) {
    
    
    boolean flag = true;
    for (int j = 0; j < n -i - 1; j++) {
    
    
       if (arr[j + 1] < arr[j]) {
    
    
           flag = false;
           int t = arr[j];
           arr[j] = arr[j+1];
           arr[j+1] = t;
       }
   }
  //一趟下来是否发生位置交换
   if(flag)
      break;
}

おすすめ

転載: blog.csdn.net/BeanGo/article/details/131792484