数组的应用

(一).冒泡排序。
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();

C#。4.1数组的应用的更多相关文章

  1. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  2. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  3. 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议75~78)

    建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法 ...

  4. 了解PHP中的Array数组和foreach

    1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组    . 2.例子:一般的数组 这里,我 ...

  5. JavaScript权威指南 - 数组

    JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...

  6. JavaScript常见的五种数组去重的方式

    ▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 先来建立一个数组 var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN ...

  7. js:给定两个数组,如何判断他们的相对应下标的元素类型是一样的

    题目: 给Array对象原型上添加一个sameStructureAs方法,该方法接收一个任意类型的参数,要求返回当前数组与传入参数数组(假定是)相对应下标的元素类型是否一致. 假设已经写好了Array ...

  8. javascript数组查重方法总结

    文章参考地址:http://blog.csdn.net/chengxuyuan20100425/article/details/8497277 题目 对下列数组去重: var arr = ['aa', ...

  9. 掌握javascript中的最基础数据结构-----数组

    这是一篇<数据结构与算法javascript描述>的读书笔记.主要梳理了关于数组的知识.部分内容及源码来自原作. 书中第一章介绍了如何配置javascript运行环境:javascript ...

  10. 小兔JS教程(四)-- 彻底攻略JS数组

    在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...

随机推荐

  1. SQL server概述

    sqlserver中包含的对象: 数据库.事务日志.索引.文件组.数据库关系图.视图.存储过程.用户自定义函数.用户.角色.程序集.表.报表.全文目录.用户自定义数据类型 数据库实际上是最高层对象,其 ...

  2. 26.单片机中利用定时器中断,在主流程while(1){}中设置每隔精确时间计量

    { CountMilliseconds++;//只负责自加,加到最大又重新从0开始 } u16 setDelay(u16 t) { ); } u8 checkDelay (u16 t)//返回非零表示 ...

  3. [转]简述volatile

    volatile int i=10; int j = i; ... int k = i; volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执 ...

  4. vi初接触

    vi初接触 它有三种模式: 一 一般模式 二 编辑模式 三 命令行模式 介绍几种比较常用的吧 -- 退出:q 写入:w 强制:! (以上可叠加) 显示行号:set nu 取消:set nonu 跳转到 ...

  5. Div在BOdy中居中

    <h1 style="position: absolute; width: 500px; height:200px; left:%; top:%; margin-left:-250px ...

  6. CSS样式鼠标点击与经过的效果一样

    a:link /* 未访问的链接 */ a:visited /* 已访问的链接 */ a:hover /* 当有鼠标悬停在链接上 */ a:active /* 被选择的链接 */ a,a:visite ...

  7. 配置android开发环境eclipse获取ADT获取不到

    在安装完Android SDK后eclipse要获取ADT, 可是由于GFW的存在, eclipse经常无法从http://dl-ssl.google.com/android/eclipse 获取到任 ...

  8. MFC关于VS内存释放的定位

    全部在App中完成 1.在 App.h 头文件声明 #ifdef _DEBUGprotected:      CMemoryState m_msOld, m_msNew, m_msDiff;#endi ...

  9. mvn 使用中的错误

    出现这种错误的时候:mvn Error building POM may not be this project's POM,报的是那个jar 包,就删除那个jar 包,重新mvn clean ins ...

  10. BZOJ3396: [Usaco2009 Jan]Total flow 水流

    3396: [Usaco2009 Jan]Total flow 水流 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 45  Solved: 27[Sub ...