zoukankan      html  css  js  c++  java
  • C#。4.1数组的应用

    数组的应用

    (一).冒泡排序。
    1.冒泡排序是用双层循环解决。外层循环的是趟数,里层循环的是次数。
    2.趟数=n-1;次数=n-趟数。
    3.里层循环使用if比较相临的两个数的大小,进行数值交换。

    代码

             int[] a = new int[8] { 9, 12, 7, 5, 15, 2, 1, 8 };
                   //冒泡排序
              for(int i=1;i<=a.Length-1;i++) //趟数
                     {
                          for (int j = 1; j <= a.Length - i; j++)//次数
                                    {
                                       if(a[j-1] > a[j])
                                          {
                                               int t = a[j - 1];
                                                a[j - 1] = a[j];
                                                a[j] = t;
                                           }
                                    }
                       }

    (二).折半查找。
    前提:数组必须是有序的。
    思路:用两个变量分别代表上限(top)和下限(bottom)的下标,再用一个变量代表中间(mid)的下标。
          1.求中间下标:mid = (top+bottom)/2
          2.上限下标下移:top = mid+1. 假设数组是升序排列。
          3.下限下标上移:bottom = mid-1;
          4.循环条件是:bottom>=top
    static void Main(string[] args)
            {
                int[] a = new int[] { 3, 5, 7, 9, 11, 13, 14, 18 };

                  Console.Write("请输入要找的数:");
                   int find = Convert.ToInt32(Console.ReadLine());

                   int top, bottom, mid; //上限下标,下限下标,中间下标
                   top = 0;
                   bottom = a.Length - 1;

                  while(bottom>=top) //只要下限下标还在上限下标的下面,就循环,否则没找到就结束。
                     {
                          //算中间下标
                         mid = (top + bottom) / 2;
                          //取中间的值
                        int n = a[mid];
                        if(n < find)
                           {
                                 top = mid + 1; //调整上限的下标
                           }
                        else if(n>find)
                          {
                            bottom = mid - 1;// 调整下限的下标。
                           }
                        else
                           {
                                 Console.WriteLine("找到了,在第" + mid + "个元素上");
                                break;
                          }
                     }
         }

    二维数组:
    表格的模型。
    定义:
         数据类型[,] 数组名 = new 数组类型[维度长度,维度长度];
         int[,] a = new int[3,4];
         int[,] a = new int[3, 4] { { 1, 2, 3, 4 },{ 5, 6, 7, 8 }, { 9, 0, 9, 8 } };
    赋值:
              数组名[下标,下标] = 值;
               a[0,0] = 5;
               a[2,3] = 10;
    取值:
            数组名[下标,下标];
    应用:

    做个图形

        int[,] map = new int[10, 10]
         {
            {1,1,1,1,1,1,1,1,1,1},
            {1,0,0,0,0,1,0,0,0,1},
            {1,8,0,0,0,1,0,0,0,1},
            {1,0,0,0,0,1,1,1,0,1},
            {1,0,0,0,0,0,0,1,0,1},
            {1,0,0,0,1,0,0,1,0,1},
            {1,0,0,0,1,0,0,0,0,1},
            {1,1,1,1,1,0,0,0,0,1},
            {1,0,0,0,0,0,0,0,9,1},
            {1,1,1,1,1,1,1,1,1,1}
         };

         for (int i = 0; i < 10; i++)

            {
              for (int j = 0; j < 10; j++)
                {
                   if (map[i, j] == 1)
                      {
                         Console.Write("■");
                       }
                   else if (map[i, j] == 0)
                      {
                        Console.Write(" ");
                      }
                  else if (map[i, j] == 2)
                    {
                       Console.Write("□");
                    }
                  else if (map[i, j] == 9)
                   {
                      Console.Write("★");
                   }
                 else if (map[i, j] == 8)
                  {
                     Console.Write("♀");
                  }
              }
            Console.WriteLine();

  • 相关阅读:
    基于mysql-JDBC的java编程(通过java连接数据库)
    mysql-windows系统上的安装配置
    Jsp编程的基础模型
    CSPRNG随机数产生器
    IntlChar()
    unserialize()过滤机制
    Closure::call()
    PHP匿名类
    LINUX 安装PHP7教程
    解析UNICODE方法
  • 原文地址:https://www.cnblogs.com/999c/p/4190098.html
Copyright © 2011-2022 走看看