五、C#入门基础05(数组)

一、什么是数组?

数组是包含若干个相同类型的变量,这些变量都可以通过索引(从0开始)进行访问。数组中的变量称为数组的元素,数组能够容纳元素的数量称为数组的长度。数组中的每个元素都具有唯一的索引与其相对应。
数组是通过指定数组的元素类型,数组的维数及数组每个维度的上限和下限来定义的,即一个数组的定义需要包含以下几个要素。
元素类型。
数组的维数。
每个维数的上下限。
数组的元素表示某一种确定的类型,如整数或字符串等。那么数组的确切含义是什么呢?数组类型的值是对象,数组对象被定义为存储数组元素类型的一系列位置。也就是说,数组是一个存储一系列元素位置的对象。数组中存储位置的数量由数组的下标和长度来确定。
数组类型是从抽象类型Array派生的引用类型,通过new运算符创建数组并将数组元素初始化为它们的默认值。数组可以分为一维数组,二维数组和多维数组等。

二、什么是一维数组?

一维数组即数组的维数为1。一维数组就好比一个大型的零件生成公司,而公司中的各个车间(如车间1,车间2,车间3等,这些名词相当于数组中的索引号)就相当于一维数组中的各个元素,这些车间既可以单独使用,也可以一起使用。

2.1 数组定义
数据类型[] 数组名=new 数据类型[数组长度];
数据类型[] 数组名={值1,值2,值3,值4};

三、什么是二维数组?

二维数组即数组的维数为2,它相当于一个表格。

3.1 数组的定义
数据类型[,] 数组名=new 数据类型[数值1,数值2];
数据类型[,] 数组名=new 数据类型[,]{{值1,值2},{值1,值2},{值1,值2}};

四、数组的基本操作?

4.1 如何遍历数组
使用foreach语句可以实现数组的遍历功能,用foreach语句访问数组中的每个元素,而不需要确切的知道每个元素的索引号。
这里写图片描述

4.2 删除数组中的元素
这里写图片描述

4.3 冒泡排序
这里写图片描述

4.4 Array类的Sort和Reverse排序方法
Sort方法用于对一维Array数组中的元素进行排序。
Reverse方法用于反转一维数组元素的顺序。但是不会进行排序。

4.5 合并数组
数组的合并实际上就是将对个一维数组合并成一个一维数组,或者将对个一维数组合并成为一个二维数组或多维数组。
这里写图片描述

4.6 拆分数组
数组的拆分实际上就是将一个一维数组拆分成多个一维数组,或是将多维数组拆分成多个一维数组或多个多维数组。
这里写图片描述

五、代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _05
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 一维数组
            //数组有一个最大的问题,有长度的限制
            //数组里面所保存的信息的类型  全部都是一致的
            //数据类型[] 数组名=new 数据类型[数组长度];
            //ints的数组的元素类型是 int 元素的个数(长度)为5
            //数组第一种定义的方法:
            //int[] ints = new int[5];
            //给每一个元素进行赋值
            //ints[0] = 10;
            //ints[1] = 20;
            //ints[2] = 30;
            //ints[3] = 40;
            //ints[4] = 50;
            //输出每个元素
            //i 实际上就已经变成了数组的下标
            //for (int i = 0; i < ints.Length; i++)
            //{
            //    Console.WriteLine(ints[i]);
            //}

            //foreach(元素数据类型 元素变量名 in 数组名称/集合名称)
            //直接获取到元素   (只针对数组不可以修改,对象是可以修改的)
            //foreach 只能够用于读取数据 只读
            //CRUD
            //foreach (int i in ints)
            //{
            //    Console.WriteLine(i);
            //}

            //for (int i = 0; i < ints.Length; i++)
            //{
            //    if (ints[i]==40)
            //    {
            //        ints[i] = 0;
            //    }
            //}
            //foreach (int i in ints)
            //{
            //    Console.WriteLine(i);
            //}

            //数组第二种定义的方法:
            //int[] ints = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
            //Console.WriteLine("长度为:{0}",ints.Length);
            //foreach (int i in ints)
            //{
            //    Console.WriteLine(i);
            //}

            //Console.ReadKey();
            #endregion

            #region 二维数组 
            //length:是得到行和列的总个数
            //你要求出行就除去列,要求出列就除去行
            //二维数组的定义:
            //int[,] ints = new int[3,2];
            //单个赋值:
            //ints[0, 0] = 10;
            //ints[0, 1] = 20;
            //ints[1, 0] = 30;
            //ints[1, 1] = 40;
            //ints[2, 0] = 50;
            //ints[2, 1] = 60;
            //循环赋值
            //for (int i = 0; i < ints.Length/2; i++)
            //{
            //    for (int j = 0; j < ints.Length/3; j++)
            //    {
            //        ints[i, j] = 10;
            //    }
            //}

            //取值1:
            //for(int i = 0; i < ints.Length / 2; i++)
            //{
            //    for (int j = 0; j < ints.Length / 3; j++)
            //    {
            //        Console.WriteLine(ints[i,j]);
            //    }
            //}

            //取值2:
            //foreach (int i in ints)
            //{
            //    Console.WriteLine(i);
            //}

            //Console.ReadKey();

            #endregion

            #region 删除数组中的元素 =0 =""
            //Console.WriteLine("请输入要删除的数组元素的位数:");
            // -1 为了得到要删除的数组的元素的下标
            //int index = int.Parse(Console.ReadLine())-1;
            //int [] ints={1,2,3,4,5,6,7,8,9,10 };
            //for (int i = index; i < ints.Length-1; i++)
            //{
            //    ints[i] = ints[i + 1];
            //}
            //ints[ints.Length-1] = 0;
            //foreach (int i in ints)
            //{
            //    Console.WriteLine(i);
            //}
            //Console.ReadKey();
            #endregion

            #region 冒泡排序是所有算法里面最最最最最最最垃圾的 两两比较 前后比较
            //快速排序  红黑树排序 左旋 或者 右旋   二叉树排序(高等数学 几何)
            //int[] ints = {1,2,9,4,5,3,8,7,6};
            //for (int i = 0; i < ints.Length-1; i++)
            //{
            //    for (int j = 0; j < ints.Length-1-i; j++)
            //    {
            //        if (ints[j]>ints[j+1])
            //        {
            //            int temp = ints[j];
            //            ints[j] = ints[j + 1];
            //            ints[j + 1] = temp;                    }
            //    }
            //}
            //foreach (int i in ints)
            //{
            //    Console.WriteLine(i);
            //}
            //Console.ReadKey();
            #endregion

            #region Array类来实现排序 Sort 从小到大
            //int[] ints = {321,123,389,3,245,431,31, };
            //排序
            //Array.Sort(ints);
            //反转(不排序) 最后一位输出第一位
            //Array.Reverse(ints);
            //foreach (int i in ints)
            //{
            //    Console.WriteLine(i);
            //}
            //Console.ReadKey();
            #endregion

            #region 合并数组 多个集合进行合并
            //int[] inti = { 1,2,3,4,5,6};
            //int[] intj = { 7,8,9,10,11,12,13};
            //int[] intz = new int[inti.Length+intj.Length];
            //for (int i = 0; i < intz.Length; i++)
            //{
            //    if (i<inti.Length)
            //    {
            //        //intz[0]=inti[0] intz[1]=inti[1] intz[2]=inti[2] intz[3]=inti[3] intz[4]=inti[4] intz[5]=inti[5]
            //        intz[i] = inti[i];
            //    }
            //    else
            //    {
            //        //intz[6]=intj[6-6] intz[7]=intj[7-6] intz[8]=intj[8-6] intz[9]=intj[9-6] intz[10]=intj[10-6] intz[11]=intj[11-6] intz[12]=intj[12-6] intz[13]=intj[13-6]
            //        intz[i] = intj[i-inti.Length];
            //    }
            //}

            //foreach (int i in intz)
            //{
            //    Console.WriteLine(i);
            //}

            //Console.ReadKey();
            #endregion

            #region 拆分数组
            //int[] intz = {1,2,3,4,5,6,7,8,9,10,11,12};
            //对等拆
            //int[] inti = new int[intz.Length / 2];
            //int[] intj = new int[intz.Length / 2];
            //int[] inti = new int[7];
            //int[] intj = new int[intz.Length - inti.Length];
            //for (int i = 0; i < intz.Length; i++)
            //{
            //    if (i<inti.Length)
            //    {
            //        inti[i] = intz[i];
            //    }
            //    else
            //    {
            //        intj[i - inti.Length] = intz[i];
            //    }       
            //}
            //对等 输出
            //for (int i = 0; i < inti.Length; i++)
            //{
            //    Console.WriteLine(inti[i]+"........."+intj[i]);
            //}
            //不对等 输出
            //for (int i = 0; i < inti.Length; i++)
            //{
            //    Console.WriteLine(inti[i]);
            //}

            //Console.WriteLine("intj....................");

            //for (int i = 0; i < intj.Length; i++)
            //{
            //    Console.WriteLine(intj[i]);
            //}

            //Console.ReadKey();
            #endregion










        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_43023809/article/details/82635113