3.4.4 冒泡排序的例子
现在我们就要使用所学的知识来做一个简单的冒泡排序算法。
小任务:对一个任意长度的整数数组进行排序,从小到大输出。排序算法使用冒泡排序,所谓冒泡排序就算遍历数组,如果顺序不对则交换相邻的两个元素进行排序。要求输出排序数组和排序后的数组。
int[] list = { 1, 0, 6, 7, 5, 9, 2, 8, 4, 3 };
Console.Write("排序前: ");
//遍历数组输出所有元素
for (int i = 0; i < list.Length; i++)
Console.Write(list[i]);
Console.WriteLine();
int tmp = 0; //用于交换变量
bool isOK = false; //表示是否还需要排序
while (!isOK)
{
isOK = true;
for (int i = 0; i < list.Length - 1; i++)
{
//如果下一个元素大于这个元素
if (list[i] > list[i + 1])
{
//交换两者
tmp = list[i];
list[i] = list[i + 1];
list[i + 1] = tmp;
//进行了一次交换表明还需要再次排序
isOK = false;
}
}
}
Console.Write("排序后: ");
for (int i = 0; i < list.Length; i++)
Console.Write(list[i]);
Console.WriteLine();
Console.Write("排序前: ");
//遍历数组输出所有元素
for (int i = 0; i < list.Length; i++)
Console.Write(list[i]);
Console.WriteLine();
int tmp = 0; //用于交换变量
bool isOK = false; //表示是否还需要排序
while (!isOK)
{
isOK = true;
for (int i = 0; i < list.Length - 1; i++)
{
//如果下一个元素大于这个元素
if (list[i] > list[i + 1])
{
//交换两者
tmp = list[i];
list[i] = list[i + 1];
list[i + 1] = tmp;
//进行了一次交换表明还需要再次排序
isOK = false;
}
}
}
Console.Write("排序后: ");
for (int i = 0; i < list.Length; i++)
Console.Write(list[i]);
Console.WriteLine();
还可以改进一下程序,使之支持从键盘输入一串数字然后输出排序结果。
Console.Write("请输入要排序的数: ");
string s = Console.ReadLine();
char [] list = s.ToCharArray();
Console.WriteLine();
Console.Write("排序前: ");
//遍历数组输出所有元素
for (int i = 0; i < list.Length; i++)
Console.Write(list[i]);
Console.WriteLine();
char tmp = '0'; //用于交换变量
bool isOK = false; //表示是否还需要排序
while (!isOK)
{
isOK = true;
for (int i = 0; i < list.Length - 1; i++)
{
//如果下一个元素大于这个元素
if (list[i] > list[i + 1])
{
//交换两者
tmp = list[i];
list[i] = list[i + 1];
list[i + 1] = tmp;
//进行了一次交换表明还需要再次排序
isOK = false;
}
}
}
Console.Write("排序后: ");
for (int i = 0; i < list.Length; i++)
Console.Write(list[i]);
Console.WriteLine();
string s = Console.ReadLine();
char [] list = s.ToCharArray();
Console.WriteLine();
Console.Write("排序前: ");
//遍历数组输出所有元素
for (int i = 0; i < list.Length; i++)
Console.Write(list[i]);
Console.WriteLine();
char tmp = '0'; //用于交换变量
bool isOK = false; //表示是否还需要排序
while (!isOK)
{
isOK = true;
for (int i = 0; i < list.Length - 1; i++)
{
//如果下一个元素大于这个元素
if (list[i] > list[i + 1])
{
//交换两者
tmp = list[i];
list[i] = list[i + 1];
list[i + 1] = tmp;
//进行了一次交换表明还需要再次排序
isOK = false;
}
}
}
Console.Write("排序后: ");
for (int i = 0; i < list.Length; i++)
Console.Write(list[i]);
Console.WriteLine();
C#几种常见流程控制语句的使用介绍完毕。在日常的应用中处处可以见到它们的身影,其实要用好这些流程控制语句还需要有一定的逻辑思维能力。