3.4.4 冒泡排序的例子

  现在我们就要使用所学的知识来做一个简单的冒泡排序算法。
  小任务:对一个任意长度的整数数组进行排序,从小到大输出。排序算法使用冒泡排序,所谓冒泡排序就算遍历数组,如果顺序不对则交换相邻的两个元素进行排序。要求输出排序数组和排序后的数组。

int[] list = 1067592843 };
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();

  C#几种常见流程控制语句的使用介绍完毕。在日常的应用中处处可以见到它们的身影,其实要用好这些流程控制语句还需要有一定的逻辑思维能力。
posted @ 2008-07-21 20:07  Jack.Net  阅读(524)  评论(0编辑  收藏  举报