c#冒泡排序 代码示例
时间: 2024-08-28 15:01:20 浏览: 19
冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
以下是C#中冒泡排序的一个简单代码示例:
```csharp
public static void BubbleSort(int[] arr)
{
int n = arr.Length;
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - i - 1; j++)
{
if (arr[j] > arr[j + 1]) // 如果当前元素大于下一个元素
{
// 交换这两个元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
在这个例子中,`BubbleSort`函数接受一个整数数组作为输入,内部有两个嵌套循环:外层控制遍历次数(最大的未排序区间),内层用于相邻元素之间的比较和交换。如果发现前面的元素比后面的元素大,就交换它们的位置。经过多次这样的比较和交换,最大的元素会逐渐“浮”到数组的末尾,这就是冒泡排序的基本原理。
相关问题
c#冒泡排序代码生成及其详细解释
冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
以下是C#中实现冒泡排序的一个示例代码,以及对代码的详细解释:
```csharp
using System;
class Program
{
static void Main(string[] args)
{
int[] arr = { 34, 19, 42, -9, 2018, 0, 2005, 77, 209 };
Console.WriteLine("原始数组:");
PrintArray(arr);
BubbleSort(arr);
Console.WriteLine("排序后的数组:");
PrintArray(arr);
}
static void BubbleSort(int[] arr)
{
int temp;
for (int j = 0; j <= arr.Length - 2; j++)
{
for (int i = 0; i <= arr.Length - 2; i++)
{
if (arr[i] > arr[i + 1])
{
temp = arr[i + 1];
arr[i + 1] = arr[i];
arr[i] = temp;
}
}
}
}
static void PrintArray(int[] arr)
{
foreach (int i in arr)
{
Console.Write(i + " ");
}
Console.WriteLine();
}
}
```
代码解释:
1. `Main` 方法定义了一个整数数组 `arr` 并初始化一些随机数。然后调用了 `BubbleSort` 方法对数组进行排序,并在排序前后分别打印了数组的内容。
2. `BubbleSort` 方法接受一个整数数组 `arr` 作为参数。外层循环控制遍历数组的次数,内层循环负责进行相邻元素之间的比较和交换。
3. 在内层循环中,如果当前元素 `arr[i]` 大于它后面的元素 `arr[i + 1]`,则将这两个元素交换。交换操作通过一个临时变量 `temp` 来完成,将 `arr[i + 1]` 的值赋给 `temp`,然后将 `arr[i]` 的值赋给 `arr[i + 1]`,最后将 `temp` 的值赋给 `arr[i]`。
4. `PrintArray` 方法用于遍历并打印数组中的每个元素。
通过上述过程,数组中的元素会按照从小到大的顺序排列。
C#冒泡排序lambda
以下是使用Lambda表达式实现的C#冒泡排序的示例代码:
```csharp
public static void BubbleSort<T>(IList<T> sortArray, Func<T, T, bool> comparison)
{
int n = sortArray.Count;
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - i - 1; j++)
{
if (comparison(sortArray[j], sortArray[j + 1]))
{
T temp = sortArray[j];
sortArray[j] = sortArray[j + 1];
sortArray[j + 1] = temp;
}
}
}
}
```
使用Lambda表达式作为比较函数,可以根据需要自定义排序规则。比较函数接受两个参数,并返回一个bool值,表示第一个参数是否应该排在第二个参数之前。
以下是使用Lambda表达式进行冒泡排序的示例代码:
```csharp
List<int> numbers = new List<int> { 5, 2, 8, 1, 9 };
BubbleSort(numbers, (a, b) => a > b);
foreach (int number in numbers)
{
Console.WriteLine(number);
}
```
这段代码将列表中的数字按照从小到大的顺序进行排序,并输出排序后的结果。