• 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#几种常见流程控制语句的使用介绍完毕。在日常的应用中处处可以见到它们的身影,其实要用好这些流程控制语句还需要有一定的逻辑思维能力。
  • 相关阅读:
    微信小程序tab(swiper)切换
    微信小程序如何动态增删class类名
    Vi (Unix及Linux系统下标准的编辑器)VIM (Unix及类Unix系统文本编辑器)
    js 阻止事件冒泡和默认行为 preventDefault、stopPropagation、return false
    H5中的touch事件
    CSS3 Gradient 渐变
    CSS3动画属性Transform解读
    你所不知的 CSS ::before 和 ::after 伪元素用法
    javascript移动设备Web开发中对touch事件的封装实例
    那些过目不忘的H5页面
  • 原文地址:https://www.cnblogs.com/0754ydj/p/1247943.html
Copyright © 2020-2023  润新知