博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET基础——数组
阅读量:6838 次
发布时间:2019-06-26

本文共 3692 字,大约阅读时间需要 12 分钟。

  这一篇,我们来看C#中的数组。

1. 数组的概念

  数组:存储相同类型多个数据元素的容器

  数组的声明和初始化: 在创建数组的时候,必须指定数组的长度

int[] nums = new int[3];            int[] nums1 = { 5,3,8 };            int[] num2 = new int[3] { 5, 3, 8 };//数组元素的个数必须与声明的个数一致            //int[] nums3 = new int[5] { 5, 3, 8 }; //错误            int[] nums4 = new int[] { 5, 3, 9 }; //正确,可以省略数组的个数

   声明了数组,但未对数组元素进行赋值,如果是int类型,则数组里面的所有元素的值都是0;如果是string类型,则数组里面所有元素的值都是null。如果你声明了一个长度为5的int类型的数组,只想对其中的1个元素赋值,那么必须在声明之后,对这个元素进行单独的赋值操作。

2. 对数组的操作

  1.  访问数组中的元素

    我们可以使用索引器来访问指定编号位置的数组,访问数组元素:num[0]、num[1] 索引从0开始

   2.  取数组的长度

     数组名.Length         int len = nums.Length;

     数组的长度不能被修改,若要修改,必须重新创建一个数组。

     string[]  arrScore=new  string[5];  arrScore =new  string[7];

  (1) string[]  arrScore=new  string[5];

        a)左边:string[]  arrScore,声明数组变量时,在栈开辟空间将arrScore存入,此时为null(其实变量arrScore不存在内存,只是为了好标识

        b)右边:new关键字会做四件事:开辟堆空间;创建对象;调用构造函数;返回堆空间地址。返回堆空间地址就是将地址0x16返回给等号左边的arrScore变量,这时栈空间地址将指向堆空间地址

 

(2)arrScore=new  string[7];

    不会修改数组,而是直接创建新的数组,在堆空间开辟新的堆空间存储,由于数组名一样,将会覆盖掉原先数组,即将原来的arrScore指向的堆空间地址擦除,重新指向新创建数组的地址0x20

        3.  将原数组拷贝到新数组 

string[]  arrScore=new  string[5]{“”,”张”,”王” ,“赵”,”孙”};

string[]  arrScoreNew=new  string[7]

a)for(int  i=0;i<arr.Length;i++)

  {arrScoreNew[i]=arrScore[i];}

 

b) arrScore.CopyTo(arrScoreNew,0);

  从新数组arrScoreNew的首元素地址开始复制进去

假设:arrScore.CopyTo(arrScoreNew,2);则存储图如下:

   4.  对数组进行排序

   典型的排序算法:冒泡排序

     让数组中的元素两两比较(第i个与第i+1个比较),经过n遍两两比较,数组中的元素能按照我们预期的规律排序。

     要从大到小排序,我们进行两两比较的时候用 < ;反之使用 > 。

     从大到小排序,如果arr[i] < ar[i+1],则交换两个元素的值。

     n个数需要排序n - 1趟;第t趟比较的次数为n - t次

     i=0,第一趟;i=1,第二趟;趟数:i+1

    程序代码如下:

int[] scores = { 100, 50, 6, 7, 20, 41 };            //进行由小到大的排序            int length = scores.Length;            int temp = 0;            bool isSwap = false; //是否有交换过            for (int i = 0; i < length; i++) //控制比较的趟数,循环一次表示比较一趟            {                isSwap = false;                //控制每一趟比较的次数,第x趟需要比较n-x次                for (int j = 0; j < length - i -1; j++)                {                    if (scores[j] > scores[j + 1])//如果这里把j写成i的话,这样每一趟比较都是两个固定的数                    {                        temp = scores[j];                        scores[j] = scores[j + 1];                        scores[j + 1] = temp;                        isSwap = true;                    }                }                if (isSwap == false) //如果在某一趟排序没有进行交换,则数组已经是有序的了,没有必要进行排序                {                    break;                }            }

 5.  调用已有方法对数组排序

   上面的冒泡排序算法一般会在面试中考到,但在程序中我们可以通过静态方法对数组进行排序。

  Array.Sort(array);    //对数组进行升序排列

  Array.Reverse(array);  //对数组进行反转,这样就达到了对数组进行降序排列的效果

 

6.  求出数组中的最大值和最小值3

  1) 通常采用的方法

int max = arr[0];for(int i = 1; i < arr.Length ;i++){    if ( arr[i] > max  )    {           max = arr[i];    }}int min = arr[0];for(int i = 1; i < arr.Length ;i++){    if ( arr[i] <  min )    {           min = arr[i];    }}

   当循环结束的时候,就可以获得数组中的最大值/最小值了。

  2) 数据需要从字符串中解析出来的时候

string[] lines = File.ReadAllLines("1.txt", Encoding.Default);            //max设置为int类型能够表示的最小值;min设置为int类型能够表示的最大值            int max = int.MinValue;            int min = int.MaxValue;            int sum = 0;            for (int i = 0; i < lines.Length; i++)            {                string[] items = lines[i].Split(new char[] {
','},StringSplitOptions.RemoveEmptyEntries); int sar = Convert.ToInt32(items[1]); sum += sar; if (max < sar) { max = sar; } if (min > sar) { min = sar; } } Console.WriteLine("这些员工的最高工资{0},最低工资{1},平均工资{2}", max, min, sum / lines.Length); Console.ReadKey();

 

 

 

 

 

  

转载于:https://www.cnblogs.com/lcxBlog/p/4505594.html

你可能感兴趣的文章
软件测试体系方案
查看>>
[cb]ScriptableWizard 创建向导
查看>>
js 查找树节点 数组去重
查看>>
【翻译】对于Ext JS 5,你准备好了吗?
查看>>
android&nbsp;sqlite&nbsp;增删改[insert、up…
查看>>
Eclipse常见问题集锦
查看>>
杭电 1711 Number Sequence 1686 2203
查看>>
石大ACM2587解题报告
查看>>
php 商场收银收费系统,使用的策略模式
查看>>
2016年宜昌楼市将迎来史上最激烈一战
查看>>
第一次团队冲刺4
查看>>
冒泡排序
查看>>
android studio 各种问题
查看>>
ios中一个开发者证书如何创建多个app应用
查看>>
创建和存储 cookie
查看>>
BZOJ2351[BeiJing2011]Matrix——二维hash
查看>>
Redis常用命令整理
查看>>
js的水仙花数的输出
查看>>
Codeforces Gym 100269 Dwarf Tower (最短路)
查看>>
mongo explain分析详解
查看>>