C#编程:排序算法实战——冒泡排序与选择排序

需积分: 50 7 下载量 172 浏览量 更新于2024-11-28 收藏 33KB DOC 举报
"C#常用排序算法大全" 在C#编程中,排序算法是基础且重要的概念,用于组织和处理数据序列。以下将详细介绍两种常见的排序算法:冒泡排序和选择排序。 冒泡排序是一种简单的排序算法,其工作原理是通过重复遍历待排序的数列,比较每对相邻元素并交换位置,直到没有更多的交换操作为止。在这个C#示例中,`BubbleSorter` 类实现了冒泡排序算法: 1. `Sort` 方法接收一个整型数组 `list` 作为参数。 2. 使用两个循环嵌套实现冒泡排序: - 外层循环控制排序轮数,由 `j` 表示,初始化为1。 - 内层循环进行元素比较和交换,由 `i` 控制,初始值为0。 - `done` 标记用于检测是否还有需要交换的元素,如果在一轮循环中没有发生交换,则说明已经排序完成。 - 当 `list[i] > list[i+1]` 时,交换 `list[i]` 和 `list[i+1]` 的值,并将 `done` 设置为 `false`,表示还有未排序的元素。 - 每一轮结束后,增加 `j` 的值,表示下一轮的比较范围减小。 3. 在主程序 `MainClass` 中,创建了一个整型数组 `iArray`,并实例化了 `BubbleSorter` 类的对象 `sh`,调用 `Sort` 方法对数组进行排序,然后使用 `Console.WriteLine` 打印排序后的结果。 选择排序也是一种基础的排序算法,它的基本思想是在每一趟(即一次完整遍历)中找到最小(或最大)的元素,放到已排序序列的末尾。在C#示例中,`SelectionSorter` 类实现了选择排序算法: 1. `Sort` 方法同样接收一个整型数组 `list`。 2. 使用一个外层循环,从第一个元素开始遍历到倒数第二个元素(因为最后一个元素在最后一轮会被自动放置在正确位置)。 3. 定义一个变量 `min` 用于存储当前未排序部分的最小值索引。 4. 使用一个内层循环,从当前元素的下一个元素开始,寻找比当前元素小的元素,更新 `min` 的值。 5. 在内层循环结束后,交换 `list[min]` 和 `list[i]` 的值,将找到的最小元素放到正确的位置。 6. 外层循环结束后,数组将被完全排序。 这两种排序算法各有优缺点:冒泡排序简单直观,但效率较低,时间复杂度为 O(n^2);选择排序每次选择最小元素,效率相对较高,也是 O(n^2),但内存交换次数少于冒泡排序。在实际应用中,通常会选择更高效的排序算法,如快速排序、归并排序或堆排序等。