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 ...
随机推荐
- 032-session函数
<?php $username="guest1"; if(isset($username)) { session_name($username); } echo " ...
- pop3&smtp
pop3&smtp pop3 Post Office Protocol - Version 3 pop3协议是离线邮件协议,是客户端取邮件用的. 默认监听在TCP:110端口. POP3会话有 ...
- Windows 2000 栈溢出 利用异常
当在一个函数(test)里面自定义了异常处理,如下: 那么在运行时,它会把自定义的异常处理函数MyExceptionhandler()的地址放入栈中(PUSH 004013CC) 然后把fs:[0]的 ...
- AVCodecContext 结构体
typedef struct AVCodecContext { int bit_rate; int frame_number; //扩展数据,如mov 格式中audio trak 中aac 格式中es ...
- 10 ~ express ~ 使用 cookie 保存用户 信息
思维导图: (1) 保存 cookie (2)销毁 cookie 一,保存 cookie 1,app.js . 新增代码 var Cookies = require('cookies') /** * ...
- 目标检测评价标准(mAP, 精准度(Precision), 召回率(Recall), 准确率(Accuracy),交除并(IoU))
1. TP , FP , TN , FN定义 TP(True Positive)是正样本预测为正样本的数量,即与Ground truth区域的IoU>=threshold的预测框 FP(Fals ...
- swiper实现匀速无缝滚动
设置属性 speed:2500,//匀速时间 autoplay: { delay: 0, stopOnLastSlide: false, disableOnInteraction: true, }, ...
- 微服务和SpringCloud入门
微服务和SpringCloud入门 微服务是什么 微服务的核心是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底去耦合,每个微服务提供单个业务功能的服务,一个服务做一件事情,从技术角度看就是一种 ...
- poj_3461 KMP算法解析
A - Oulipo Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit S ...
- DevOps专题|玩转Kubernetes网络
Kubernetes无疑是当前最火热的容器编排工具,网络是kubernetes中非常重要的一环, 本文主要介绍一些相应的网络原理及术语,以及kubernetes中的网络方案和对比. Kubernete ...