C#冒泡排序算法实现详解
本文介绍如何使用C#语言实现经典的冒泡排序算法。通过定义基于引用传递的交换方法,配合嵌套循环对整数数组进行从小到大排序,帮助开发者理解基础排序逻辑与C#语法细节。
算法目标与原理
冒泡排序(Bubble Sort)是一种简单的排序算法。其核心逻辑是通过重复遍历要排序的列表,比较相邻的两个元素,如果顺序错误就交换它们的位置。每次遍历会将当前未排序部分的最大值“冒泡”到末尾,直到整个序列有序。
C#代码实现步骤
第1步:引入命名空间与定义类结构
首先需要在程序中添加必要的命名空间支持,以便使用控制台输出和数据结构。创建一个名为 冒泡排序 的命名空间,并在其中定义 Program 类作为程序入口。
第2步:编写元素交换辅助方法
为了实现代码复用,可以定义一个静态方法 swap。该方法利用 ref 关键字传入两个整数的引用,从而直接在内存中交换它们的值,无需返回值。
static void swap( ref int atemp, ref int btemp)
{
int temp = atemp;
atemp = btemp;
btemp = temp;
}
第3步:准备待排序数据并输出初始状态
在 Main 方法中初始化一个整数数组,包含若干无序数字。使用 foreach 循环遍历数组,将排序前的元素打印到控制台,便于后续对比验证。
int[] arr = {23,44,66,76,98,11,3,9,7};
Console.WriteLine("排序前的数组:");
foreach(int item in arr)
{
Console.Write(item+" ");
}
第4步:执行冒泡排序循环
使用两层嵌套 for 循环完成排序逻辑:
- 外层循环:
i从 0 遍历至arr.Length-1,控制需要进行的轮数。 - 内层循环:
j从 0 遍历至arr.Length-1-i,避免已排好序的末尾元素参与比较。
在内层循环中,判断当前元素是否大于下一个元素。若 arr[j] > arr[j + 1],则调用 swap 方法交换两者位置。
for(int i=0; i<arr.Length-1; i++)
{
for(int j=0; j<arr.Length-1-i; j++)
{
if (arr[j] > arr[j + 1])
swap( ref arr[j], ref arr[j + 1]);
}
}
第5步:验证排序结果
排序完成后,再次遍历数组并打印结果。此时数组应呈现升序排列。最后使用 Console.ReadKey() 暂停控制台窗口,以便观察输出。
Console.WriteLine("排序后的数组:");
foreach(int item in arr)
{
Console.Write(item+" ");
}
Console.WriteLine();
Console.ReadKey();
完整代码汇总
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 冒泡排序
{
class Program
{
static void swap( ref int atemp, ref int btemp)//注意ref的使用
{
int temp = atemp;
atemp = btemp;
btemp = temp;
}
static void Main(string[] args)
{
int temp=0;
int[]arr={23,44,66,76,98,11,3,9,7};
Console.WriteLine("排序前的数组:");
foreach(int item in arr)
{
Console.Write(item+" ");
}
Console.WriteLine();
for(int i=0;i<arr.Length-1;i++)
{
for(int j=0;j<arr.Length-1-i;j++)
{
if (arr[j] > arr[j + 1])
swap( ref arr[j], ref arr[j + 1]);
}
}
Console.WriteLine("排序后的数组:");
foreach(int item in arr)
{
Console.Write(item+" ");
}
Console.WriteLine();
Console.ReadKey();
}
}
}
运行结果说明
执行上述代码后,控制台将首先输出原始乱序数组 23 44 66 76 98 11 3 9 7 ,随后输出排序后的升序数组 3 7 9 11 23 44 66 76 98 。这证实了冒泡排序算法在C#环境中的正确性。
以上就是C#冒泡排序算法实现的详细内容,更多关于C#算法编程的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













