数组与集合PPT课件

上传人:可**** 文档编号:77321134 上传时间:2022-04-19 格式:PPTX 页数:40 大小:217.33KB
收藏 版权申诉 举报 下载
数组与集合PPT课件_第1页
第1页 / 共40页
数组与集合PPT课件_第2页
第2页 / 共40页
数组与集合PPT课件_第3页
第3页 / 共40页
资源描述:

《数组与集合PPT课件》由会员分享,可在线阅读,更多相关《数组与集合PPT课件(40页珍藏版)》请在装配图网上搜索。

1、16.1 一维数组 6.1.1 一维数组的创建及初始化 一维数组的声明与分配语句的语法形式: 数据类型 数组名 = new 数据类型符长度;或者: 数据类型 数组名; 数组名=new 数据类型符长度; 示例: double score=new double300 ;或者: double score; score=new double 300 ; 第1页/共40页26.1.1 一维数组的创建及初始化 为数组元素赋初值的语法形式:数据类型符 数组名 = 初值列表;或者:数据类型符 数组名= new 数据类型符 初值列表; 示例:int x=1,2,3,4;int x=new int 1,2,3,4

2、;第2页/共40页36.1.2 一维数组的简单应用示例:double aver = 0.0;double score=new double300 ;for(int i=0;i300;i+) scorei=i;for (int j = 0; j 300; j+) aver = aver + scorej; aver = aver / 300;第3页/共40页46.2 二维数组 6.2.1 二维数组的创建及初始化 二维数组的定义与分配语法形式:数据类型符 , 数组名 =new数据类型符长度1,长度2; 或者数据类型符 , 数组名;数组名=new 数据类型符 长度1,长度2; 示例: int , a

3、=new int 3,4; 或者 int , a; a=new int 3,4; /为数组分配存储空间 第4页/共40页56.2.1 二维数组的创建及初始化 为数组元素赋初值的语法形式:数据类型符 , 数组名 =new int , 初始列表1,初始列表2, ,初始列表n ;或者数据类型符 , 数组名 =初始列表1,初始列表2,初始列表n ; 示例: int,a=new int ,1,2,3,4,5,6; 或者: int,a=1,2,3,4,5,6;第5页/共40页66.2.2 二维数组的简单应用示例:某班有M名同学,本学期开了N门课,期末考试后,要统计每个学生的平均分,请编写程序代码实现该功能

4、,要求对于每个学生要输入学号和N门课的成绩。static void Main(string args) const int M = 2; const int N = 2; int, score= new intM, N + 1; int i, j; double aver = new doubleM; for (i = 0; i M; i+) Console.WriteLine(请输入第0个人的学号和成绩:,i+1); score i , 0 = Convert.ToInt32(Console.ReadLine(); for ( j=1;j=N ;j+) score i, j = Conver

5、t.ToInt32(Console.ReadLine(); 第6页/共40页76.2.2 二维数组的简单应用接上页for (i = 0; i M; i+) averi = 0; for ( j = 1; j = N; j+) averi = averi + score i, j; averi = averi /N ; for (i = 0; i M; i+) Console.WriteLine(); for ( j=0;j=N ;j+) Console .Write (0 , score i,j ); Console.Write(0 ,aver i ); Console.Read(); 第7页

6、/共40页86.3 交错数组数组也属于多维数组,只是其每行的列数均不同。 交错数组的定义一般分为两步,以二维数组为例。首先定义二维数组占用的行数,并分配行,然后定义每一个,并分配空间。第8页/共40页96.3.1 交错数组的创建及初始化分配行:数据类型符 数组名=new 数据类型符 行数 ;示例:int b=new int 3 ; /定义具有3行的交错数组各行数组元素个数的分配 :数组名i=new 数据类型符 长度; b0=new int 2;/首行具有两个元素 b1=new int 3; /第二行具有3个元素 b2=new int 4; /第三具有有4个元素第9页/共40页106.3.1 交

7、错数组的创建及初始化交错数组可以在声明时进行初始化。示例:int a=new int new int 1,2, new int 3,4,5, new int 6,7,8,9;或者: int a= new int 1,2, new int 3,4,5, new int 6,7,8,9 ;第10页/共40页116.3.2 交错数组的简单应用 示例: 编程输出杨辉三角的前五行。杨辉三角的前五行值如下。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1第11页/共40页126.3.2 交错数组的简单应用static void Main(string args) const int M = 5

8、; int yhsj = new intM ; int i, j; for (i = 0; i 5; i+) yhsji = new inti + 1; for (i = 0; i M; i+) yhsji0 = 1; yhsjii = 1; for (i = 2; i 5; i+) for ( j = 1; j i; j+) yhsji j = yhsji - 1 j - 1 + yhsji - 1 j; for (i = 0; i M; i+) Console.WriteLine(); for ( j=0;j=i;j+) Console .Write(0 ,yhsj i j ); 第12页

9、/共40页136.4 遍历数组6.4.1 使用for循环遍历 在遍历数组时,最常用的3种方式就是使用Array类提供的Length属性、GetUpperBound方法和GetLength方法。遍历一维数组 示例:int a = 1, 2, 3, 4, 5, 6 ;for (int i = 0; i a.Length; i+) Console.Write(0,-4, ai);Console.Read();第13页/共40页146.4.1 使用for循环遍历示例:通过GetUpperBound方法获取数组的最高下标。int a = 1, 2, 3, 4, 5, 6 ;for (int i = 0;

10、 i a.GetUpperBound(0)+1; i+) Console.Write(0,-4, ai);Console.Read();注: GetUpperBound方法中的参数0表示0维,一维数组的维数就是0。第14页/共40页156.4.1 使用for循环遍历遍历二维数组示例:int, a = 1, 2, 3, 4, 5, 6 ;int n = a.Length;Console.WriteLine(一共有0个元素!,n );for (int i = 0; i a.GetLength(0)+1; i+) Console.WriteLine(); for (int j = 0; j a.Ge

11、tLength(1)+1;j+ ) Console.Write(0,-4, ai,j ); Console.Read();第15页/共40页166.4.1 使用for循环遍历遍历交错数组 示例:int a = new int 2 ;a0=new int 1,2,3;a1=new int 4,5;int n = a.Length;Console.WriteLine(一共有0个元素!,n );for (int i = 0; i a.Length; i+) Console.WriteLine(); for (int j = 0; j a i .Length ; j+) Console.Write(0

12、,-4, aij);Console.Read();第16页/共40页17 注意Array类的Length属性在二维数组和交错数组中的用法区别。第17页/共40页186.4.2 使用foreach遍历一维数组示例:int numbers = 4, 5, 6, 1, 2, 3, -1, -2, 0 ;foreach (int i in numbers) Console.WriteLine(i);第18页/共40页196.4.2 使用foreach遍历二维数组示例:int , numbers =new int3,2 4,44 ,5,55 ,6,66;foreach (int i in numbers

13、) Console.Write(0,-3 , i );Console.Read();第19页/共40页206.5 常用集合 6.5.1 ArrayList类 ArrayList是一个集合,使用方法与Array类似,但Array是数组,有维数且大小固定,而ArrayList没有维数,大小不固定,故ArrayList又称为动态数组。 常用属性: Count:获取动态数组中实际所包含的元素数 Item:获取或设置指定索引处的元素 Capacity:获取动态数组的容量大小第20页/共40页216.5.1 ArrayList类常用方法:Add、Remove、RemoveAt、Clear、Insert、I

14、ndexOf、Reverse、Sort、ToArray、Contains。示例: ArrayList li = new ArrayList(8);注意,这里的8指,容量与元素的个数是两个完全不同的概念,集合中的元素个数通过属性Count获取,而容量则是通过Capacity属性获取。容量总是大于或等于元素的个数。 第21页/共40页226.5.1 ArrayList类示例:static void Main(string args) ArrayList Li = new ArrayList(2); Console.WriteLine(Li中的元素的个数为0, Li.Count); Console.

15、WriteLine(Li中的容量为0, Li.Capacity ); int arr = new int 10; Console.WriteLine(arr中的元素的个数为0,arr.Length ); Console.Read();第22页/共40页23添加元素 Add方法,添加元素,自动添加到列表的末尾。示例:static void Main(string args) ArrayList Li = new ArrayList (); Li.Add(a); Li.Add(nihao ); Li.Add(1); for (int i = 0; i Li.Count; i+) Console.W

16、rite(0,-4,Lii ); Console.Read(); 第23页/共40页24插入元素ArrayList提供了一个用于插入操作的方法Insert,该函数的语法形式如下: public void Insert( int index, Object value)示例:ArrayList Li = new ArrayList();string arr = new string wo, men, shi, peng, you ;Li.Add(a);Li.Add(nihao );Li.Add(1);Li.AddRange(arr); /注意与Li.Add (arr)的区别; Li.Add(21

17、);Console.WriteLine (Li.Count);Console.WriteLine(Li.Capacity);Console.WriteLine(排序前的顺序为:);第24页/共40页25插入元素 代码接上页for (int i = 0; i Li.Count; i+) Console.Write(0,-8 , Lii); if (i+1) % 5 = 0) Console.WriteLine();Li.Insert(0,hehe);Console.WriteLine();Console.WriteLine(插入后的顺序为:);for (int i = 0; i Li.Count

18、; i+) Console.Write(0,-8 , Lii); if (i +1)% 5 = 0) Console.WriteLine();Console.Read();第25页/共40页26删除元素对于ArrayList类的实例不再需要的元素,可以通过Remove和RemoveAt删除。示例:static void Main(string args) ArrayList Li = new ArrayList(); string arr = new string wo, men, shi, peng, nihao ; Li.Add(a); Li.Add(nihao); Li.Add(1);

19、Li.AddRange(arr); Li.Add(21); Console.WriteLine(排序前的顺序为:);第26页/共40页27删除元素代码接上页for (int i = 0; i Li.Count; i+) Console.Write(0,-8 , Lii); if (i+1) % 5 = 0) Console.WriteLine(); Li.Remove(nihao); Console.WriteLine(); Console.WriteLine(排序后的顺序为:); for (int i = 0; i Li.Count; i+) Console.Write(0,-8 , Lii

20、); if (i + 1) % 5 = 0) Console.WriteLine(); Console.Read();注意:Remove方法负责移除ArrayList对象的第一个匹配项RemoveAt的参数不是要删除的元素,而是其下标,例如RemoveAt(1)第27页/共40页28元素的排序Sort方法用于排序。示例:static void Main(string args) ArrayList Li = new ArrayList(); string arr = new string wo, men, shi, peng, you ; Li.Add(a); Li.Add(nihao); L

21、i.Add(1); Li.AddRange(arr); Li.Add(21); Console.WriteLine(排序前的顺序为:);第28页/共40页29元素排序 代码接上页 for (int i = 0; i Li.Count; i+) Console.Write(0,-8 , Lii); if (i+1) % 5 = 0) Console.WriteLine(); Li.Sort(); Console.WriteLine(); Console.WriteLine(排序后的顺序为:); for (int i = 0; i Li.Count; i+) Console.Write(0,-8

22、, Lii); if (i + 1) % 5 = 0) Console.WriteLine(); Console.Read(); 注意:元素类型必须相同,否则排序会出错!第29页/共40页306.5.2 哈希表 哈希表,是按照链表的形式进行存储的,不需要顺序排列,而ArrayList类是按照顺序进行排列的。对于链表存储的结构,需要通过索引进行访问。第30页/共40页31 Hashtable类表示哈希表,是一个键/值对的集合。 常用属性:Keys,Values ,Count。 常用方法:Add、Remove、Clear、 ContainKey、ContainValue 第31页/共40页326.

23、5.2 哈希表示例:static void Main(string args) Hashtable ht = new Hashtable(); ht.Add(001,number); ht.Add (002,grade); ht.Add(003, name); Console.WriteLine(输出ht的键/值的对数为:0, ht.Count ); Console.WriteLine(请输入要查找的键:); string a = Console.ReadLine(); if (ht.ContainsKey(a) Console.WriteLine(找到键0所对应的值1, a, hta); e

24、lse Console.WriteLine(在ht中没有找到要查找的键0,a); ht.Remove(003);第32页/共40页336.5.2 哈希表 Console.WriteLine(请输入要查找的键:); string b = Console.ReadLine(); Console.WriteLine(“键0所对应的值1在哈希表中”, b, ht.ContainsKey(b)?”包含”:”没有包含”); String value=“name”; Console.WriteLine(“值0所对应的键1在哈希表中”, value, ht.ContainsValue(value)?”包含”:

25、”没有包含”); Console.WriteLine(“在没有使用方法clear前输出ht的键/值的对数为:0” ,ht.Count); ht.Clear(); Console.WriteLine(“使用了clear方法后,输出的键/值的对数为:0”,ht.Count); Console.ReadLine();第33页/共40页34遍历哈希表 遍历哈希表通过foreach语句来实现,有两种方式。一种是使用DictionaryEntry结构体访问Hashtable中的元素;另一种就是使用普通的类型作为只读变量,通过键的下标来访问。 第34页/共40页35遍历哈希表使用DirectonaryEnt

26、ry遍历哈希表 示例:static void Main(string args) Hashtable ht = new Hashtable(); ht.Add(001,number); ht.Add (002,grade); ht.Add(003, name); ht.Add(004,age); ht.Add(005, sex); Console.WriteLine(输出ht的键/值的对数为:0,ht.Count ); foreach (DictionaryEntry de in ht) Console.Write(0,-4,de.Key); Console.Write(0,-4,de.Val

27、ue); Console.WriteLine(); Console .ReadLine ();第35页/共40页36遍历哈希表通过键的下标遍历哈希表示例:static void Main(string args) Hashtable sh = new Hashtable(); sh.Add(001, str1); sh.Add(002, str2); sh.Add(003, str3); Console.WriteLine(code string ); foreach (string s in sh.Keys) Console.WriteLine(s + + shs); Console.Rea

28、d(); 第36页/共40页376.5.3 哈希表的排序由哈希表的遍历可以看出,哈希表并不是按照顺序输出的,而是随机的。对哈希表的排序定义为是对key(键)的排序。但是该定义并不能实现,因为无法直接在哈希表中对keys重新进行排序。因此,如果需要让哈希表按照某种规则来输出,可以采取一种变通的做法:将哈希表中的键值用属性Keys取出,并复制到ArrayList的实例中,然后对ArrayList的实例进行排序,最后把排序后ArrayList中键对应的值输出。第37页/共40页386.5.3 哈希表的排序示例:static void Main(string args) Hashtable ht =

29、new Hashtable(); ht.Add(001,number); ht.Add(004,age); ht.Add (002,grade); ht.Add(005, sex); ht.Add(003, name); Console.WriteLine(输出ht的键/值的对数为:0,ht.Count ); ArrayList akeys=new ArrayList(ht.Keys); akeys.Sort(); foreach (string s in akeys) Console.Write(s + :); Console.WriteLine(hts); Console .ReadLine (); 第38页/共40页396.6 小结 本章分别详细介绍了一维数组、多维数组和交错数组的创建、初始化以及遍历等。对于C#中的数组,必须明确指出其大小,当一个数组实例被创建时,每一维的标号和长度就被建立了。 介绍了ArrayList类,该类可以按照需求动态增加空间容量,而且每次都是以当前空间的2倍进行扩展。 由于ArrayList每次操作都要涉及大量数据的移动,不适宜进行频繁插入操作,所以提出了在内存中以链表形式存储的Hashtable,并介绍了相关使用方法。第39页/共40页40感谢您的观看。第40页/共40页

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!