C#实现快速排序:代码详解及开发注意要点
以下是用C#实现快速排序的代码: ```csharp using System; class QuickSortExample { // 快速排序的主函数 public static void QuickSort(int[] arr, int left, int right) { if (left < right) { // 分区操作,获取基准元素的最终位置 int pivotIndex = Partition(arr, left, right); // 对基准元素左边的子数组进行快速排序 QuickSort(arr, left, pivotIndex - 1); // 对基准元素右边的子数组进行快速排序 QuickSort(arr, pivotIndex + 1, right); } } // 分区函数,将数组分为两部分 private static int Partition(int[] arr, int left, int right) { // 选择最右边的元素作为基准元素 int pivot = arr[right]; int i = left - 1; for (int j = left; j < right; j++) { if (arr[j] < pivot) { i++; // 交换 arr[i] 和 arr[j] Swap(arr, i, j); } } // 将基准元素放到正确的位置 Swap(arr, i + 1, right); return i + 1; } // 交换数组中两个元素的位置 private static void Swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } static void Main() { int[] arr = { 10, 7, 8, 9, 1, 5 }; int n = arr.Length; Console.WriteLine("排序前的数组:"); foreach (int num in arr) { Console.Write(num + " "); } QuickSort(arr, 0, n - 1); Console.WriteLine("\n排序后的数组:"); foreach (int num in arr) { Console.Write(num + " "); } } } ``` 代码注释解释了每个函数的作用和关键步骤。`QuickSort`函数是快速排序的主函数,它通过递归调用自身对数组进行排序。`Partition`函数用于将数组分为两部分,使得左边部分的元素都小于基准元素,右边部分的元素都大于基准元素。`Swap`函数用于交换数组中两个元素的位置。 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 基准元素的选择很重要,若选择不当可能导致算法性能下降,比如每次都选择最小或最大的元素作为基准。 2. 递归调用时要注意边界条件,避免出现栈溢出的问题,确保递归能够正确结束。 3. 交换元素时要注意索引的正确性,防止出现数组越界的错误。 ######[AI写代码神器 | 680点数解答 | 2025-08-15 20:23:48]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)362
- 工程师必知:软件系统用户文档编写九大要点揭秘(百度文心 | 350点数解答 | 2023-11-09 18:23:53)204
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)244
- C++ 破解“国王游戏”弱化版:贪心排序算法巧求最少最大奖赏(DeepSeek | 550点数解答 | 2025-04-28 18:16:50)413
- 巧妙贪心排序:解决国王游戏中大臣奖赏最大化问题(DeepSeek | 1002点数解答 | 2025-05-10 20:58:15)203
- C++ 实现:用贪心算法解国王游戏(弱化版),使大臣获赏最大值最小(DeepSeek | 507点数解答 | 2025-05-10 20:59:01)184
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)332
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)486
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)370
- Java实现Student类:含构造、方法及年龄判定(字节豆包 | 464点数解答 | 2024-11-19 15:55:26)394
- Python 实现多功能手机通讯录:添加、查看、删除、修改、查找全搞定!(字节豆包 | 1030点数解答 | 2025-06-05 15:47:56)255
- 超详细:实现LED灯中速→慢速→快速循环闪烁及特定顺序闪烁的程序修改方案(字节豆包 | 865点数解答 | 2024-10-20 21:13:53)251