C#实现冒泡排序算法:从键盘输入10个数并排序

5星 · 超过95%的资源 | 下载需积分: 50 | ZIP格式 | 15KB | 更新于2025-03-15 | 64 浏览量 | 33 下载量 举报
4 收藏
冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换的元素为止,这时该数列已经排序完成。冒泡排序的名称来自其工作方式,它就像水中的气泡一样,最小的元素会逐渐"浮"到数列的顶端。 使用C#实现冒泡排序通常需要以下几个步骤: 1. 从键盘读取输入。这可以通过控制台读取函数实现,例如`Console.ReadLine()`或`Console.ReadLine()`结合`int.TryParse()`。 2. 将输入的字符串转换为整数数组。这一步需要考虑用户可能输入非数字字符的情况,因此需要错误处理。 3. 实现冒泡排序算法。这涉及到对数组进行多次遍历,比较相邻元素并交换它们的位置(如果顺序错误)。 4. 将排序后的数组输出到控制台。 在C#中,我们可以使用下面的代码来实现冒泡排序的程序: ```csharp using System; class Program { static void Main() { Console.WriteLine("请输入数字的个数:"); string countString = Console.ReadLine(); int n = int.Parse(countString); // 获取要输入的数的个数 int[] numbers = new int[n]; // 创建一个整数数组存储输入的数 Console.WriteLine("请输入{0}个数字:", n); for (int i = 0; i < n; i++) { string input = Console.ReadLine(); if (!int.TryParse(input, out numbers[i])) // 将输入的字符串转换为整数并存储到数组中 { Console.WriteLine("输入错误,请输入一个数字!"); i--; // 输入错误时重新输入当前数字 } } BubbleSort(numbers); // 调用冒泡排序方法 Console.WriteLine("排序后的数组:"); foreach (int number in numbers) { Console.Write(number + " "); } } // 冒泡排序方法实现 static void BubbleSort(int[] array) { bool swapped; do { swapped = false; for (int i = 1; i < array.Length; i++) { if (array[i - 1] > array[i]) // 交换相邻元素 { int temp = array[i]; array[i] = array[i - 1]; array[i - 1] = temp; swapped = true; } } } while (swapped); // 如果在一次遍历中没有发生交换,则数组已排序完成 } } ``` 在上述代码中,我们首先通过`Console.ReadLine()`函数从键盘接收用户输入的数字数量,然后通过循环接收用户输入的每个数字。用户输入的数字首先通过`int.TryParse()`函数尝试转换为整数,并存储在数组中。如果用户输入的不是有效的数字,程序会提示用户重新输入,直到输入正确的整数。 当收集完所有用户输入的数字后,我们将调用`BubbleSort()`函数进行排序。`BubbleSort()`函数使用了双重循环,外层循环控制排序的遍历次数,内层循环负责进行相邻元素的比较和交换。如果在一次完整的遍历中没有任何元素交换,那么说明数组已经排序完成,此时外层循环将结束。 需要注意的是,冒泡排序的效率并不高,对于N个元素,冒泡排序的时间复杂度为O(N^2)。尽管它易于理解且实现简单,但在处理大量数据时,冒泡排序的性能会显著下降,因此在实际应用中往往会选择其他更为高效的排序算法,如快速排序、归并排序或堆排序等。

相关推荐