C#实现冒泡排序算法的代码示例

沈亦白
沈亦白
发布时间:2026-10-13 | 4人浏览过
原创

本文深入解析C#中的冒泡排序算法,涵盖其基本工作原理、O(N²)的时间复杂度分析,并提供可直接运行的代码示例。内容包含核心排序逻辑、静态方法优化建议以及测试验证流程,帮助开发者掌握这一经典排序技术的实际应用。

冒泡排序原理与复杂度

冒泡排序(Bubble Sort)是一种基础的交换类排序算法。其核心思想是通过重复遍历待排序的列表,依次比较相邻的两个元素。如果它们的顺序错误(例如在前面的数大于后面的数),就将它们的位置互换。这一过程就像水中的气泡一样,较大的数值逐渐“浮”到序列的末尾,而较小的数值则逐步“沉”向头部。

具体操作逻辑如下:

  1. 第一轮遍历:从数组的第一个位置开始,两两比较 array[index] 和 array[index+1]。若前者大于后者,则交换两者位置。此轮结束后,最大值会被移动至数组末尾。
  2. 后续遍历:重复上述动作,但每完成一轮,无需再比较已排好序的末尾元素。因此,第二轮只需比较到倒数第二个元素,第三轮到倒数第三个,依此类推。
  3. 终止条件:当遍历次数减少至仅剩一个元素未比较时,整个数组即完成排序。

在时间复杂度方面,对于长度为 N 的数组,需要进行大约 N*(N-1)/2 次比较。在最坏情况下(逆序排列),交换次数也与此相当。根据大O表示法,冒泡排序的时间复杂度为 O(N²)。虽然在常规大规模数据处理中效率不如快速排序或归并排序,但其逻辑简单,易于理解和实现,适合小规模数据或教学演示。

C#代码实现

以下是一个完整的C#控制台应用程序示例,展示了如何定义排序类、实现从小到大的冒泡排序逻辑,并进行测试输出。代码结构清晰,便于嵌入现有项目或单独运行。

using System;

namespace MySort
{
  // 先建立一个类,以后把所有排序方法都放到这个类里
  public class SumSort
  {
    // 冒泡排序方法,从小到大排
    public void PopSort(int[] list)
    {
      int i, j, temp;  // 先定义一下要用的变量
      
      // 外层循环控制需要进行的趟数
      for (i = 0; i < list.Length - 1; i++)
      {
        // 内层循环进行相邻元素比较
        for (j = i + 1; j < list.Length; j++)
        {
          if (list[i] > list[j]) // 如果第二个小于第一个数
          {
            // 交换两个数的位置
            temp = list[i];      // 把大的数放在一个临时存储位置
            list[i] = list[j];   // 然后把小的数赋给前一个
            list[j] = temp;      // 然后把临时位置的那个大数赋给后一个
          }
        }
      }
    }
  }
  
  public class test
  {
    static void Main()
    {
      // 准备一组乱序的测试数据
      int[] arr = { 1, 4, 2, 43, 5, 61, 89, 34, 67, 32, 40 };
      
      // 将数据排序类实例化,然后调用方法
      SumSort mysort = new SumSort();
      
      // 执行排序:矮的排前面高的排后面
      mysort.PopSort(arr);
      
      // 验证结果:看看大家都排第几位了
      for (int i = 0; i < arr.Length; i++)
      {
        Console.WriteLine("第{0}位是{1}", i + 1, arr[i]);
      }
      Console.WriteLine();
    }
  }
}

使用优化与注意事项

在实际开发中,为了提高调用便利性,可以将 PopSort 方法声明为 static 静态方法。这样在使用时无需实例化类,直接通过 SumSort.PopSort(arr) 即可调用,简化了代码结构。

此外,标准的冒泡排序通常采用“相邻元素比较”的方式(即内层循环范围为 j=0 到 list.Length-i-1)。上述示例中的代码通过外层索引 i 与内层索引 j(从 i+1 开始)的配合,同样实现了将最小值逐个前置的效果,逻辑等价且易于理解。

总结

冒泡排序虽然存在 O(N²) 的时间复杂度瓶颈,但其直观的逻辑使其成为学习算法入门的优秀案例。在 C# 中实现该算法不仅涉及基本的循环结构和条件判断,还体现了面向对象编程中将功能封装到类中的思想。通过上述代码示例,您可以快速在项目中集成简单的排序功能,并根据实际需求调整为静态方法以提高效率。

以上就是C#实现冒泡排序算法的详细教程,更多关于C#算法与排序的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表