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

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换的元素为止,这时该数列已经排序完成。冒泡排序的名称来自其工作方式,它就像水中的气泡一样,最小的元素会逐渐"浮"到数列的顶端。
使用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)。尽管它易于理解且实现简单,但在处理大量数据时,冒泡排序的性能会显著下降,因此在实际应用中往往会选择其他更为高效的排序算法,如快速排序、归并排序或堆排序等。
相关推荐










xueyaping1989
- 粉丝: 6
最新资源
- 油田石油开采工作场景PPT模板下载
- ASP.NET Handler生成静态页面完整解决方案教程
- 冰河工具软件:信息安全实验中不可或缺的远程控制工具
- 电信isag短信与ismp源码解析及SP收费服务接口
- 天地图整合显示shp文件的GIS操作教程
- C语言实现NP完全问题:近似算法求解子集和
- 掌握VS中字段截取的高效技巧
- ESP32 MMD: 探索3D建模技术在数字模型创建中的应用
- 简洁商务风工作汇报PPT模板设计
- HTML地理信息系统控件MapDemo使用指南
- 3D版洞洞板设计软件LochMaster30功能解析
- 基于MVC架构的电子商务网站管理系统设计
- 探索Rails引擎administrate构建灵活管理仪表板
- 最新Source Insight3.50.0075汉化版发布,优化编码体验
- 实现简单文件上传的jquery.ocupload-1.1.2.js教程
- Linux下安装JDK1.5.22 64位版本指南