c#冒泡排序 有小到大
时间: 2023-07-22 17:40:39 浏览: 105
C#冒泡排序的示例代码如下:
```csharp
int[] arr = { 5, 3, 8, 4, 2 };
for (int i = 0; i < arr.Length - 1; i++)
{
for (int j = i + 1; j < arr.Length; j++)
{
if (arr[i] > arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
foreach (int num in arr)
{
Console.Write(num + " ");
}
```
代码解释:
1. 定义一个整型数组arr,并初始化数组元素。
2. 外层循环控制比较的轮数,循环次数为数组长度减1。
3. 内层循环控制每轮比较的次数,循环次数为数组长度减去当前轮数。
4. 如果当前元素大于下一个元素,则交换两个元素的位置。
5. 最后遍历数组输出排序结果。
以上代码实现的是从小到大排序。
相关问题
c# 冒泡排序
以下是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])
{
// 交换 arr[j] 和 arr[j+1]
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
在这个示例中,我们定义了一个名为`BubbleSort`的静态方法,它接受一个整数数组作为参数,并使用冒泡排序算法对数组进行排序。内部循环遍历数组并比较相邻的元素,如果它们不是按照升序排列的,则交换它们的位置。
要使用该方法对整数数组进行排序,只需调用`BubbleSort`并传入要排序的数组即可:
```csharp
int[] arr = { 64, 34, 25, 12, 22, 11, 90 };
BubbleSort(arr);
Console.WriteLine("排序后的数组:");
foreach (int i in arr)
{
Console.Write(i + " ");
}
```
输出结果为:
```
排序后的数组:
11 12 22 25 34 64 90
```
c#冒泡排序
冒泡排序是一种基于比较的排序算法,它通过重复地遍历要排序的列表,比较相邻的元素,并根据需要交换它们的位置来实现排序。每一轮遍历都会将当前未排序部分的最大(或最小)元素“冒泡”到正确的位置[^4]。
### 基础实现
以下是一个基础的冒泡排序实现示例,使用 C# 语言编写:
```csharp
public static void BubbleSort(int[] array)
{
if (array == null)
throw new ArgumentNullException(nameof(array));
int n = array.Length;
// 外层循环控制遍历轮数
for (int i = 0; i < n - 1; i++)
{
// 内层循环进行相邻元素比较和交换
for (int j = 0; j < n - i - 1; j++)
{
// 如果前一个元素大于后一个元素,则交换
if (array[j] > array[j + 1])
{
// 交换元素
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
```
#### 使用示例
下面是如何使用上面定义的 `BubbleSort` 方法对数组进行排序的示例:
```csharp
int[] numbers = { 5, 3, 8, 4, 2 };
Console.WriteLine("排序前: " + string.Join(", ", numbers));
BubbleSort(numbers);
Console.WriteLine("排序后: " + string.Join(", ", numbers));
```
### 双重循环方式实现
除了上述的基础实现之外,还可以使用双重循环的方式实现冒泡排序:
```csharp
public static void BubbleSort()
{
int[] arr = { 1, 8, 9, 5, 6, 2, 3, 4, 7 };
int arrLength = arr.Length;
for (int i = 0; i < arrLength - 1; i++)
{
for (int j = 0; j < arrLength - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
// 交换 arr[j] 和 arr[j+1] 的值
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
Console.WriteLine("排序后结果:" + string.Join(",", arr));
}
```
### 递归方式实现
冒泡排序也可以通过递归的方式来实现:
```csharp
public static void RecursiveBubbleSort(int[] arr, int arrLength)
{
if (arrLength == 1)
return;
for (int i = 0; i < arrLength - 1; i++)
{
if (arr[i] > arr[i + 1])
{
// 交换 arr[i] 和 arr[i+1] 的值
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
RecursiveBubbleSort(arr, arrLength - 1);
}
public static void RecursiveBubbleSortRun()
{
int[] arr = { 1, 8, 9, 5, 6, 2, 3, 4, 7 };
int arrLength = arr.Length;
RecursiveBubbleSort(arr, arrLength);
Console.WriteLine("排序后结果:" + string.Join(",", arr));
}
```
### 性能与适用性
冒泡排序的时间复杂度在平均和最坏情况下都是 O(n²),而在最佳情况下是 O(n)。它的空间复杂度为 O(1),因为它是一个原地排序算法。冒泡排序是稳定的,意味着相同元素的相对位置不会改变。尽管冒泡排序不是最快的排序算法,但它适用于小规模数据或者基本有序的数据集[^4]。
阅读全文
相关推荐







