翼度科技»论坛 编程开发 .net 查看内容

程序开发中常用的10种算法,你用过几种?

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
当编写程序时,了解和使用不同的算法对解决问题至关重要。以下是C#中常用的10种算法,每个算法都伴随着示例代码和详细说明。
1. 冒泡排序 (Bubble Sort):
冒泡排序是一种简单的比较排序算法,它多次遍历数组,将较大的元素逐渐浮动到数组的末尾。
  1. public static void BubbleSort(int[] arr)
  2. {
  3.     int n = arr.Length;
  4.     for (int i = 0; i < n - 1; i++)
  5.     {
  6.         for (int j = 0; j < n - i - 1; j++)
  7.         {
  8.             if (arr[j] > arr[j + 1])
  9.             {
  10.                 int temp = arr[j];
  11.                 arr[j] = arr[j + 1];
  12.                 arr[j + 1] = temp;
  13.             }
  14.         }
  15.     }
  16. }
复制代码
2. 快速排序 (Quick Sort):
快速排序是一种高效的分治排序算法,它通过选择一个基准元素并将数组分为较小和较大的两部分来进行排序。
  1. public static void QuickSort(int[] arr, int low, int high)
  2. {
  3.     if (low < high)
  4.     {
  5.         int partitionIndex = Partition(arr, low, high);
  6.         QuickSort(arr, low, partitionIndex - 1);
  7.         QuickSort(arr, partitionIndex + 1, high);
  8.     }
  9. }
  10. public static int Partition(int[] arr, int low, int high)
  11. {
  12.     int pivot = arr[high];
  13.     int i = low - 1;
  14.     for (int j = low; j < high; j++)
  15.     {
  16.         if (arr[j] < pivot)
  17.         {
  18.             i++;
  19.             int temp = arr[i];
  20.             arr[i] = arr[j];
  21.             arr[j] = temp;
  22.         }
  23.     }
  24.     int swap = arr[i + 1];
  25.     arr[i + 1] = arr[high];
  26.     arr[high] = swap;
  27.     return i + 1;
  28. }
复制代码
3. 合并排序 (Merge Sort):
合并排序是一种稳定的分治排序算法,它将数组分成两半,分别排序后再合并。
  1. public static void MergeSort(int[] arr)
  2. {
  3.     int n = arr.Length;
  4.     if (n > 1)
  5.     {
  6.         int mid = n / 2;
  7.         int[] left = new int[mid];
  8.         int[] right = new int[n - mid];
  9.         for (int i = 0; i < mid; i++)
  10.             left[i] = arr[i];
  11.         for (int i = mid; i < n; i++)
  12.             right[i - mid] = arr[i];
  13.         MergeSort(left);
  14.         MergeSort(right);
  15.         int i = 0, j = 0, k = 0;
  16.         while (i < mid && j < (n - mid))
  17.         {
  18.             if (left[i] < right[j])
  19.                 arr[k++] = left[i++];
  20.             else
  21.                 arr[k++] = right[j++];
  22.         }
  23.         while (i < mid)
  24.             arr[k++] = left[i++];
  25.         while (j < (n - mid))
  26.             arr[k++] = right[j++];
  27.     }
  28. }
复制代码
4. 二分查找 (Binary Search):
二分查找是一种高效的查找算法,它要求在有序数组中查找特定元素。
[code]public static int BinarySearch(int[] arr, int target){    int low = 0, high = arr.Length - 1;    while (low

举报 回复 使用道具