首页  >  文章  >  后端开发  >  C# 中的冒泡排序

C# 中的冒泡排序

王林
王林原创
2024-09-03 15:24:24823浏览

以下文章提供了 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 已经排好序了。它们不会被交换并保持原样。因此,此过程将根据算法停止。

第二关:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:Sorting in C#下一篇:C# SortedSet