一、什么是数组?
数组是包含若干个相同类型的变量,这些变量都可以通过索引(从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
}
}
}