方法一:通过if-else语句实现有限数值的比较
//定义三个变量a,b,c并赋值
int a = 13;
int b = 32;
int c = 23;
if (a > b) //假设a的值大于b的值,若成立则判断a与c的值
{
if (a > c) //若a的值大于c的值,则输出a最大
{
Console.WriteLine("最大值为 a = " + a);
}
else //若a的值小于c,则输出c最大
{
Console.WriteLine("最大值为 c = " + c);
}
//若a大于b的假设不成立,即a小于b,则判断b与c的大小
if (b > c) //若b大于c,则输出c最小
{
Console.WriteLine("最小值为 c = " + c);
}
else //反之则输出b最小
{
Console.WriteLine("最小值为 b = " + b);
}
}
else
{
if (b > c) //判断b与c的大小,若b大于c则输出最大值b
{
Console.WriteLine("最大值为 b = " + b);
}
else //反之输出最大值c
{
Console.WriteLine("最大值为 c = " + c);
}
if (a > c) //判断a与c的大小,若a大,则输出最小值c
{
Console.WriteLine("最小值为 c = " + c);
}
else //反之输出最小值a
{
Console.WriteLine("最小值为 a = " + a);
}
总结:(1)优点:通过if-else语句实现数值之间的比较逻辑较为简单直接,容易理解。
(2)缺点:if-else逻辑判断在需要进行大量的数值比较时将十分繁琐,并且不可以比较任意数量的数值。
方法二:冒泡排序(一个for循环实现)
int[] number = new int[] { 12, 3, 44, 62, 15, 32, 35, 8 };//定义一个数组
int j, temp;
for (int i = 0; i < number.Length - 1; i++) //第一个元素与之后每一个元素比较一次
{
j = i + 1;
id: //定义个标签方便反复调用
if (number[i] < number[j]) //将比较结果前面元素若小于后面元素则互换
{
temp = number[i];
number[i] = number[j];
number[j] = temp;
goto id;
}
else if (j < number.Length - 1)
{
j++;
goto id;
}
}
foreach (int n in number)
{
Console.Write(n + " ");
}
总结:冒泡排序的原理是第一次循环先由第一个数与第二个、第三个……最后一个数相比较,若前一个小于/大于后一个数则两数对调,再由第二个与第三 个、第四个……最后一个相比较,一直到最后两个数相比较,达到所有数按照一定的规律输出(从大到小/从小到大)。
方法三:冒泡排序(两个for循环)
int[] number = new int[] { 12, 3, 44, 62, 15, 32, 35, 8 };
for (int i = 0; i < number.Length; i++)
{
for (int j = i + 1; j < number.Length; j++)
{
int temp;
if (number[i] < number[j])
{
temp = number[i];
number[i] = number[j];
number[j] = temp;
}
}
}
foreach (int n in number)
{
Console.Write(n + " ");
}
总结:与单个for循环的冒泡排序法相比区别在于:一个是在for循环内定义标签通过goto跳转语句实现两层循环,一个则是在for循环内嵌套for循环实现两层 循环。虽写法不同,但原理相通。
方法四:利用集合灵活实现冒泡排序
List<int> Iint = new List<int>();
string stop = string.Empty; //控制停止变量
do
{
Console.WriteLine("请输入需要排序的一个数:");
int number = int.Parse(Console.ReadLine()); //从控制台获取要比较的数
Iint.Add(number);
Console.WriteLine("是否继续添加? 是:y/否:n");
stop = Console.ReadLine();
}
while (stop == "y");
int temp;
for (int i = 0; i < Iint.Count; i++) //冒泡排序方法
{
for (int j = i + 1; j < Iint.Count; j++)
{
if (Iint[i] < Iint[j])
{
temp = Iint[i];
Iint[i] = Iint[j];
Iint[j] = temp;
}
}
}
Console.WriteLine("排序后结果为:");
foreach (int n in Iint)
{
Console.Write(n + " ");
}
总结:利用集合实现冒泡排序可以比较任意数量的数值,是最灵活的排序比较方法。
注:本文重点为实现数值比较及排序,并未对控制台输入字符是否合理做出异常处理,请见谅。