排序算法
冒泡排序
冒泡排序是一种简单的排序算法,它重复地比较相邻的两个元素,如果它们的顺序不正确,就交换它们,直到整个数组排序完成
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;
}
}
}
}
快速排序
快速排序是一种高效的排序算法,它使用分治策略将数组分成较小的子数组,然后递归地对这些子数组进行排序。
void QuickSort(int[] arr, int low, int high)
{
if (low < high)
{
int pivot = Partition(arr, low, high);
QuickSort(arr, low, pivot - 1);
QuickSort(arr, pivot + 1, high);
}
}
int Partition(int[] arr, int low, int high)
{
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j < high; j++)
{
if (arr[j] < pivot)
{
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp2 = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp2;
return i + 1;
}
搜索算法
二分查找
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;
if (arr[mid] < target)
left = mid + 1;
else
right = mid - 1;
}
return -1; // 如果找不到目标值
}
递归算法
阶乘计算
递归算法是一种将问题分解成更小的子问题,并通过递归调用来解决问题的方法。下面是计算阶乘的递归函数示例:
int Factorial(int n)
{
if (n == 0)
return 1;
else
return n * Factorial(n - 1);
}
这个函数将不断调用自身,直到n等于0,然后返回1,然后逐级返回并计算出阶乘结果。
以上是C#基础算法的一些示例,它们代表了编程中常见的问题和解决方案。了解这些算法对于编程非常重要,它们可以帮助你更好地理解和解决各种问题。希望本文能够帮助你入门C#算法编程。如果你想深入学习算法,还有许多其他复杂和高级的算法等待你去探索。