首頁 > 後端開發 > C#.Net教程 > C# 中的冒泡排序

C# 中的冒泡排序

王林
發布: 2024-09-03 15:24:24
原創
825 人瀏覽過

以下文章概述了 C# 中的冒泡排序。冒泡排序是一種被認為是最簡單的演算法,它將元素或數字按特定順序放置,並且這些元素最終被放置到數組中已排序的正確位置。

冒泡排序演算法

冒泡排序工作的基本概念是考慮陣列。該數組從第一個索引到最後一個索引迭代。遍歷數組時,會將其與相鄰元素進行比較,如果它們以錯誤的順序出現,則進行交換。這意味著如果數字小於特定索引處的當前元素,那麼它們將被交換。重複這個過程直到陣列完全排序。它以通行證的形式進行。

讓我們考慮七個隨機數的陣列並對它們進行排序:

冒泡排序以遍的形式運作。這些遍一次取得兩個相鄰的數字,然後比較這兩個數字。如果存在的數字為 N。那麼對資料集進行排序所需的遍數為 N – 1。每次遍都會考慮這兩個數字對資料進行排序,並重複該序列,直到所有數字都未按預期方式排序。

第 1 關:

90   76  45   93   68   13   98

在第一遍中,比較前兩個數字。這裡它將比較 90 和 76。90 大於 76,因此它將被交換。

76   90   45   93   68   13   98

現在將 90 與 45 進行比較。 (0 也大於 45。因此這將與 45 交換。

76   45   90   93   68   13   98

現在,數字 90 和 93 已經排好序了。它們不會被交換並保持原樣。因此,此過程將根據演算法停止。

第 2 關:

76   45   90   93   68   13   98

此遍將再次從陣列中的第一個數字開始。這意味著現在將從 76 開始排序。 76 將與 45 進行比較。小於 76 的 45 將與 76 交換。

45   76   90   93   68   13   98

現在將檢查76和90。它們的順序已經正確,因此數組中不會發生任何變化。

這樣就會遍歷到陣列的結尾。

冒泡排序演算法

  • BubbleSort(陣列:可排序項目的清單)
  • N= 陣列.長度
  • 設定標誌 := True
  • 當 Flag == true 時,對於 I = 1 到 N-1,重複步驟 3 到 5
  • 設定標誌 := False
  • 設定 i:=0
  • 在 i時重複
  • (a) 如果 Array[i+1]>Array[i],則:
    交換數組[i]和數組[i+1] 設定標誌:= True
  • (b) 設定 i :=i+1
  • 退出

C# 中冒泡排序的範例

以下是範例:

範例#1

實作冒泡排序的C#程式。

代碼:

using System;
class Bubble
{
static void bubbleSrt(int []arr)
{
int num = arr.Length;
for (int i = 0; i < num - 1; i++)
for (int j = 0; j < num - i - 1; j++)
if (arr[j] > arr[j + 1])
{
// swap tmp and arr[i]
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
/* Printing the array */
static void printIt(int []arr)
{
int n = arr.Length;
for (int i = 0; i < n; ++i)
Console.Write(arr[i] + " ");
Console.WriteLine();
}
// Main method
public static void Main()
{
int []arr = {90, 76, 45, 93, 68, 13, 98};
bubbleSrt(arr);
Console.WriteLine("Sorted array");
printIt(arr);
}
}
登入後複製

輸出:

C# 中的冒泡排序

上面的程式定義了一個使用冒泡排序對數字進行排序的方法。冒泡排序有兩個 for 循環,它們遍歷數組並將要交換的數字儲存在臨時變數 tmp 中。然後,在索引 j 的幫助下,將該 tmp 值與其應在的位置交換。另一種方法用於列印排序後的陣列。冒泡排序使用 n – 1 遍對陣列進行排序。

冒泡排序也可以實現降序排序。

範例#2

實現降序冒泡排序的C#程式如下:

代碼:

using System;
public class BubbleSrt
{
public static void Main(string[] args)
{
int[]arr=new int[10]{23,98,45,12,9,16,65,74,34,29};//Array created with 10 unsorted numbers
bubblesort(arr,10);
int a;
for(a = 0; a < 10; a++)
Console.Write(arr[a]+"\t");//Printing the array after sorting in descending order
Console.ReadLine();
}
//bubble sort
static void bubblesort(int[] data, int n)
{
int a;
int b;
for(a = 0; a < n; a++)
for (b = n-1; b > a; b--)
if (data[b] > data[b-1])//Condition to arrange array in descending order
{
int temp = data[b];
data[b]=data[b-1];
data[b-1]=temp;
}
}
}
登入後複製

輸出:

C# 中的冒泡排序

在這裡,我們按降序對陣列進行排序。我們已經聲明了一個包含十個數字的陣列。之後,我們在主程式中呼叫冒泡排序函數,然後按降序列印它。這裡的冒泡排序函數採用兩個變數來遍歷數組。這裡使用兩個 for 迴圈並遍歷數組並比較數組中存在的值。條件是索引 b 和索引 b – 1 處存在的資料將被比較。如果 b 處的數字較大,則會進行交換。這是在內部 for 迴圈中完成的。一旦交換,就會持續到陣列末端。

結論

冒泡排序是最簡單的排序方法。它遍歷整個數組並彈出數字,這有助於交換並使數組按正確的順序排列。它比較兩個相鄰的數字,並在它們不符合預期順序時彈出它們。使用 C# 進行排序非常簡單,可以透過使用陣列中存在的基本變數來完成。

以上是C# 中的冒泡排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板