在C#开发里,算法是处理数据和业务逻辑的核心工具。掌握常见的算法实现,能让我们写出更高效、易维护的代码。下面通过具体实例来看几种基础算法在C#中的写法。

一、冒泡排序算法实例
冒泡排序是一种简单的交换排序,它重复遍历数组,比较相邻元素并交换顺序错误的元素,直到整个数组有序。以下是在C#中实现冒泡排序的示例:
using System;
class SortExample
{
// 冒泡排序方法
static void BubbleSort(int[] arr)
{
int n = arr.Length;
for (int i = 0; i < n - 1; i++)
{
// 每一轮将最大值移到末尾
for (int j = 0; j < n - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
static void Main()
{
int[] data = { 5, 2, 9, 1, 3 };
BubbleSort(data);
Console.WriteLine("排序结果:");
foreach (int item in data)
{
Console.Write(item + " ");
}
}
}
上面代码定义了一个BubbleSort方法,通过双层循环完成排序。对于小规模数据,这种写法直观易懂,但时间复杂度为O(n^2),数据量大时效率偏低。
二、二分查找算法实例
二分查找要求数据已经有序,每次取中间元素比较,缩小查找范围。下面给出C#中的二分查找实现:
using System;
class SearchExample
{
// 二分查找,找到返回索引,找不到返回-1
static int BinarySearch(int[] arr, int target)
{
int left = 0;
int right = arr.Length - 1;
while (left <= right)
{
int mid = left + (right - left) / 2;
if (arr[mid] == target)
{
return mid;
}
else if (arr[mid] < target)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
return -1;
}
static void Main()
{
int[] sorted = { 1, 2, 3, 5, 9 };
int index = BinarySearch(sorted, 5);
Console.WriteLine("目标索引:" + index);
}
}
该示例中的BinarySearch方法时间复杂度为O(log n),适合在有序集合中快速定位数据。实际开发中,若数据频繁变动,可先排序再查找,或直接使用C#内置的Array.BinarySearch方法。
三、算法选择的简单建议
在C#项目中选用算法时,可参考下面几点:
- 数据量小且逻辑简单,冒泡排序等基础算法够用
- 需要频繁查找且数据稳定,优先排序后使用二分查找
- 复杂业务可借助C#类库中的
- 和
等结构优化性能
理解这些算法的原理和C#写法,能帮我们在编码时做出更合理的选择。