C# 基础Array
一、Array的作用
连续定义多个相同类型的变量,比如我定义1000个学生的学生年龄,int[] age = new int[1000];不需要慢慢的一个一个变量的定义,数组是不是很方便。
需要注意的:1)Array是引用类型。引用类型是传递栈中的地址。2)数组都是由连续的内存位置组成的。
二、Array定义与赋值
1)先定义再赋值比如:
//定义100个学生的成绩
//第一种定义并初始化方式
int[] studentSorce = new int[];
studentSorce[] = ;
studentSorce[] = ;
//第二种定义并初始化方式
int[] studentSorce02 = new int[]{,,,,};
//第三种定义并初始化方式
int[] studentSorce03 = new int[] { , , , , };
//第四种定义并初始化方式
int[] studentSorce04 = { , , , , };
//二维定义方式
int[,] arr = new int[, ];
//二维定义并赋值,3行4列
int[,] arr02 = new int[, ] { { ,,, }, { , , , },{,,,} };
2)二维数组遍历
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ArrayTest
{ class Program
{
public static int[,] array2D; //定义二维数组,没赋值数组长度 /// <summary>
/// 随机生成二维数组
/// </summary>
/// <param name="rows">一维(行)</param>
/// <param name="columns">二维(列)</param>
public static void RaArray2D(int rows, int columns)
{
Random ra = new Random();
array2D = new int[rows, columns];
for (int i = ; i < array2D.GetLength(); i++)
{
for (int j = ; j < array2D.GetLength(); j++)
{
array2D[i, j] = ra.Next(, ); //范围10-100的随机数
}
}
}
/// <summary>
/// 遍历二维数组
/// </summary>
/// <param name="arr2D">二维数组</param>
public static void EachArray2D(int[,] arr2D)
{
for (int i = ; i < arr2D.GetLength(); i++)
{
for (int j = ; j < arr2D.GetLength(); j++)
{
Console.Write(arr2D[i, j].ToString().PadRight(, '\u0000'));
}
Console.WriteLine();
}
} static void Main(string[] args)
{
RaArray2D(, );
EachArray2D(array2D); Console.WriteLine(array2D.Length);//显示二维数组总长度.
Console.WriteLine(array2D.Rank); //数组维度 Console.ReadKey(); } }
}
3)数组初始化的值,代码 int[] studentSorce = new int[]; 我们进行两步创建。
int[] x; //定义int[]的数组,没有赋值.
x = new int[]; //赋值后x[0]...x[4]初值0
这样我们就可以在类中定义数组,然后在方法中赋值。如下
public static int[] newArr; //在类中定义,然后在方法中赋值。估计可行。
三、Array常用方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ArrayTest
{ class Program
{
public static int[] array1D; //声明array1D变量,该变量的类型为int[]
/// <summary>
/// 随机生成一维数组
/// </summary>
/// <param name="number">表示数组的长度</param>
public static void RaArray(int number)
{
array1D = new int[number]; //创建了一个数组,将数组的地址赋值给array1D
Random ra = new Random();
for (int i = ; i < array1D.Length; i++)
{
array1D[i] = ra.Next(, ); //随机范围30-100
}
}
/// <summary>
/// 遍历数组方法
/// </summary>
public static void EachArray()
{
for (int i = ; i < array1D.Length; i++)
{
Console.Write(array1D[i].ToString().PadRight(, '\u0000'));
}
} static void Main(string[] args)
{
RaArray(); //生成随机数组方法
EachArray(); //遍历数组的方法
//下面介绍一些数组的方法
Console.WriteLine(); //换行
Array.Sort(array1D); //排序由小到大
EachArray();
Console.WriteLine(); //换行
Array.Reverse(array1D); //数组元素反转
EachArray();
Console.WriteLine(); //换行
int max = array1D.Max();
int min = array1D.Min();
int sum = array1D.Sum();
double avg = array1D.Average();
Console.WriteLine("array1D数组的最大值:{0},最小值:{1},和:{2},平均值:{3}", max, min, sum, avg);
Console.WriteLine(); //换行
Console.WriteLine("输入要查询的数字");
int chaXun = int.Parse(Console.ReadLine());
bool isContains = array1D.Contains(chaXun); //查询数组是否包含指定数,返回bool
Console.WriteLine(isContains);
Console.WriteLine();
int[] newArray1d = new int[array1D.Length];
array1D.CopyTo(newArray1d, ); //将array1D的所有元素复制给newArray1D
for (int i = ; i < newArray1d.Length; i++)
{
Console.Write(newArray1d[i].ToString().PadRight(, '\u0000'));
}
Console.WriteLine("输入数字,检索第一次出现的索引值");
int number = int.Parse(Console.ReadLine());
int firstIndex = Array.IndexOf(array1D, number); //搜索array1D中第一次出现指定值的索引值
int laseIndex = Array.LastIndexOf(array1D, number); //最后一次出现的索引值. Console.WriteLine("搜索第一次出现{0}位置索引号为:{1},最后一次出现的索引号为{2}", number, firstIndex, laseIndex); Console.WriteLine(Array.Find(array1D, item => item > )); //数组中第一个大于5的数字
Console.WriteLine(Array.FindLast(array1D, items => items < )); //检索数组最后一个大于90的值并输出
foreach (int item in Array.FindAll(array1D,item=>item>)) //遍历所有大于50的值
{
Console.Write("大于50的有{0}", item);
}
Console.WriteLine(); //换行
//第一个大于50的索引值,和最后一个大于50的索引值
Console.WriteLine("第一个大于50的索引是:{0},最后大于50的是{1}", Array.FindIndex(array1D, item => item > ), Array.FindLastIndex(array1D, item => item > ));
Console.ReadKey();
} }
}
四、交错数组
交错数组:每行元素个数不想等的二维数组。有时也称“数组的数组”,定义、初始化、遍历如下代码:
//交错数组,定义与初始化
int[][] interleavedArray = new int[][];
interleavedArray[] = new int[] { , , , };//第一行4个元素
interleavedArray[] = new int[] { , }; //第二行2个元素
interleavedArray[] = new int[] { , , };
interleavedArray[] = new int[] { , , , , , };
//遍历交错数组
//先测试下交错数组1维长度(行)
Console.WriteLine(interleavedArray.GetLength()); //第一种方法,获取第一维长度
Console.WriteLine(interleavedArray.Length); //推荐使用,获取第一维长度.标准用法
Console.WriteLine(interleavedArray[].Length); //(第一行有多少列)
Console.WriteLine(interleavedArray[].Length); //第二行有多少列
//下面遍历的问题就容易了
Console.ForegroundColor = ConsoleColor.Cyan; for (int i = ; i < interleavedArray.Length; i++) //行,一维
{
for (int j = ; j < interleavedArray[i].Length; j++) //列,二维
{
Console.Write(interleavedArray[i][j].ToString().PadRight(, ' '));
}
Console.WriteLine();
}
交错数组应用代码如下:
C# 基础Array的更多相关文章
- PHP SPL标准库之数据结构栈(SplStack)介绍(基础array已经可以解决很多问题了,现在开始解决问题)
PHP SPL标准库之数据结构栈(SplStack)介绍(基础array已经可以解决很多问题了,现在开始解决问题) 一.总结 SplStack就是继承双链表(SplDoublyLinkedList)实 ...
- [基础] Array.prototype.indexOf()查询方式
背景 最近在看Redux源码,createStore用于注册一个全局store,其内部维护一个Listeren数组,存放state变化时所有的响应函数. 其中store.subscribe(liste ...
- golang基础--Array数组
基本特性 格式: var Name [n]<type>,n>0 如: var a [10]int 表示,定义一个长度为10,元素类型为int性的数组 数组长度: 长度(len)也是数 ...
- JavaScript基础系列目录(2014.06.01~2014.06.08)
下列文章,转载请亲注明链接出处,谢谢! 链接地址: http://www.cnblogs.com/ttcc/tag/JavaScript%20%E5%9F%BA%E7%A1%80%E7%9F%A5%E ...
- JQuery之操作array
1:split 函数将字符串按某个字符分割,将分割后的结果存入字符串数组中 function SplitUsersInformation(users) { var usersArray = users ...
- react-redux(1)
基础 Array.prototype.reduce //类似的核心思想 const initState = ''; const actions = ['a', 'b', 'c']; const new ...
- forEach、map、 for-in 、 for 、some 对比 break
map.forEach 乱用 ,被嫌弃,现整理区别 补补基础 Array 迭代方法 1. every(): 对数组中的每一项运行给定函数,如果该函数对每一项都返回true ,则返回true. 2. f ...
- 如何加速golang写业务的开发速度
如何加速golang写业务的开发速度 不要忌讳panic golang写业务代码经常会被吐槽,写业务太慢了,其中最大的吐槽点就是,处理各种error太麻烦了.一个项目中,会有30%或者更多的是在处理e ...
- [转载]Redux原理(一):Store实现分析
写在前面 写React也有段时间了,一直也是用Redux管理数据流,最近正好有时间分析下源码,一方面希望对Redux有一些理论上的认识:另一方面也学习下框架编程的思维方式. Redux如何管理stat ...
随机推荐
- while循环和do-while循环语句
while 语句 条件表达式的结果是一个 boolean 值,如果为true,则执行循环体:如果为 false,循环就会结束. while 循环体是一个代码块,所以 while 循环是可以嵌套其他的语 ...
- apache flink源码挖坑 (未完待续)
Apache Flink 源码解读(一) By yyz940922原创 项目模块 (除去.git, .github, .idea, docs等): flink-annotations: flink ...
- Python MySQL Order By
章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...
- hdu 1671 Phone List 统计前缀次数
Phone List Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- CCCC L2-004. 这是二叉搜索树吗?
题意: 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值: 其右子树中所有结点的键值大于等于该结点的键值: 其左右子树都是二叉搜索树. 所谓 ...
- kettle将csv文件导入数据库
具体过程学习了: 1.连接数据库 2.添加新资源库 3.选择Other Repositories 4.选择Database Repository,第二个需要配置额外参数 5.连接数据库相关设置 6.连 ...
- hibernate.hbm.xml必须必须配置主键
hibernate.hbm.xml必须必须配置主键 <id name="XXid" type="java.lang.long" column=" ...
- 大二暑假第三周总结--开始学习Hadoop基础(二)
简单学习NoSQL数据库理论知识 NoSQL数据库具有以下几个特点: 1.灵活的可扩展性(支持在多个节点上进行水平扩张) 2.灵活的数据模型(与关系数据库中严格的关系模型相反,显得较为松散) 3.与与 ...
- idea将web项目打成war包放在tomcat/webapps上运行
1.进入Project Structure 或者 file -> Project Structure 或者 快捷键ctrl+alt+shift+s 2.选中Artifacts 3.点加号,然后如 ...
- JAVAEE 和项目开发(第三课:HTTP的请求头和请求方式)
HTTP 协议之请求格式 请求格式的结构:请求行:请求方式.请求的地址和 HTTP 协议版本 请求头:消息报头,一般用来说明客户端要使用的一些附加信息 空行: 位于请求行和请求数据之间,空行是必须 ...