
C#实现冒泡排序算法详解与示例
下载需积分: 9 | 20KB |
更新于2025-06-19
| 24 浏览量 | 举报
收藏
冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,就像水中的气泡一样升到水面上。
在C#中实现冒泡排序的基本思想是:
1. 比较相邻的元素。如果第一个比第二个大,就交换它们两个;
2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数;
3. 针对所有的元素重复以上的步骤,除了最后一个;
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
这里提供一个C#程序中实现冒泡排序的示例代码:
```csharp
using System;
class BubbleSortExample
{
// 冒泡排序函数
static void BubbleSort(int[] array)
{
int temp = 0;
for(int j = 0; j <= array.Length - 2; j++) // j <= length - 2 是因为外循环最后会多走一次
{
for(int i = 0; i <= array.Length - 2; i++)
{
if (array[i] > array[i + 1]) // 如果当前元素大于下一个元素,则交换它们
{
temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
}
}
}
}
// 打印数组内容的函数
static void PrintArray(int[] array)
{
foreach(int i in array)
{
Console.Write(i + " ");
}
Console.WriteLine();
}
// 主函数
static void Main(string[] args)
{
int[] numbers = { 34, 6, 23, 12, 45, 56, 32, 2, 67, 43 };
Console.WriteLine("未排序的数组内容如下:");
PrintArray(numbers); // 打印未排序的数组
BubbleSort(numbers); // 调用冒泡排序函数
Console.WriteLine("排序后的数组内容如下:");
PrintArray(numbers); // 打印排序后的数组
}
}
```
上述代码定义了一个`BubbleSort`函数,它接受一个整型数组`array`作为参数并对其进行排序。排序过程中使用了两层嵌套的for循环来实现冒泡排序算法。内部循环负责比较相邻元素并在必要时交换它们,而外部循环负责控制排序的轮数。
`PrintArray`函数用于输出数组的内容,帮助我们在控制台上查看排序前后的结果。
在`Main`函数中,定义了一个未排序的数组`numbers`,然后通过`Console.WriteLine`调用`PrintArray`函数输出排序前的数组,接着调用`BubbleSort`函数对数组进行排序,最后再次调用`PrintArray`函数输出排序后的数组内容。
冒泡排序算法虽然简单易懂,但是它的效率并不高,特别是对于大数据集而言,其时间复杂度为O(n^2),因此在实际应用中很少单独使用,常常被用作教学演示或是处理小规模数据的简单场景。对于更高效的排序算法,如快速排序、归并排序和堆排序,它们的时间复杂度都优于冒泡排序,因此在需要处理大量数据时,更应优先考虑这些算法。
相关推荐









金楽
- 粉丝: 2
资源目录
共 12 条
- 1
最新资源
- Modbus调试工具:支持RTU/TCP协议的必备工具
- 校园商品交易数据库设计初学者指南
- 网游玩家沟通与资讯搜索神器软件需求规格揭秘
- 6000个Photoshop渐变样式包下载
- ASP技术实现中学校园网站建设及应用
- C#实现的连连看游戏源代码深度解析
- 精通Visual C#2005:语言基础与Web及数据库开发
- C语言题库集锦与解答指南
- ASP.NET 常用控件集合及源码解读
- C8051F02X模块用法实例详解与编程指南
- VB与Access打造的数据库管理系统源码详解
- C语言版QT源代码深入解读与学习指南
- XML+Schema课程培训PPT
- 亦思绿色文件打包器1.2:简洁高效的压缩工具
- 深入研究ASP客户关系管理系统设计与实现
- AT91SAM9260串口测试与调试方法
- VB2005数据库入门精要:掌握第2、3、13章要点
- Delphi抽奖程序:实用、易修改、适合来宾抽奖
- 深入理解Spring JDBC事务管理及其应用
- Jsp开发轻松实现分页的authorization-module标签
- 9260微控制器裸机调试与引导代码实现
- 50款优质Banner PSD模板免费下载
- 掌握Win32 API:中文教程精要解析
- 仿网易163邮箱注册界面的HTML网页设计教程