欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载
     

    C#常用数据结构与算法.ppt

    • 资源ID:3718884       资源大小:3.43MB        全文页数:147页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C#常用数据结构与算法.ppt

    第7章 常用数据结构与算法,数据结构和算法是程序设计的基石。本章重点讲述C#中的几个主要的数据结构类型:字符串、数组和枚举。本章还将介绍一些常用算法,如几种典型排序算法的C#实现。,2023/3/16,2,7.1 字符串,字符串是应用程序和用户交互的主要方式之一。.NET提供了几个类来快速实现字符串操作,包括String、StringBuilder等。,2023/3/16,3,7.1.1 静态字符串String,System.String是最常用的字符串操作类。下面从各个应用的角度对String类进行详细的介绍。1.比较字符串比较字符串是指按照字典排序规则,判定两个字符的相对大小。在String类中,常用的比较字符串的方法包括Compare、CompareTo、CompareOrdinal以及Equals。,2023/3/16,4,串的基本概念,空串:不含任何字符的串称为空串空格串:由一个或多个空格组成的串,称为空格串。串相等:是指两个串的长度相等且对应的字符相等。模式匹配:确定子串在主串中首次出现位置的运算。子串:串中任意个连续的字符组成的子序列称为该 串的子串。主串:包含子串的串称为该子串的主串。,7.1.1 静态字符串String,(1)Compare方法 Compare方法是String类的静态方法,用于全面比较两个字符串对象。下面使用Compare方法来比较两个字符串,输出结果如注释语句所示。/定义两个String对象,并对其赋值 System.String strA=Hello;System.String strB=World;,2023/3/16,7,C#程序设计实用教程,7.1.1 静态字符串String,/Compare Console.WriteLine(String.Compare(strA,strB);/-1 Console.WriteLine(String.Compare(strA,strA);/0 Console.WriteLine(String.Compare(strB,strA);/1,2023/3/16,8,C#程序设计实用教程,7.1.1 静态字符串String,(2)CompareTo方法 CompareTo方法将当前字符串对象与另一个对象做比较,其作用与Compare类似,返回值也相同。CompareTo与Compare相比,区别在于:CompareTo不是静态方法,可以通过一个String对象调用;CompareTo没有重载形式,只能按照大小写敏感方式比较两个整串。,2023/3/16,9,C#程序设计实用教程,7.1.1 静态字符串String,CompareTo方法的使用如下代码所示:/定义两个String对象,并对其赋值 System.String strA=Hello;System.String strB=World;/CompareTo Console.WriteLine(strA.CompareTo(strB);/-1,2023/3/16,10,C#程序设计实用教程,7.1.1 静态字符串String,(3)Equals方法 Equals方法用于方便地判定两个字符串是否相同,有两种重载形式:public bool Equals(string)public static bool Equals(string,string)如果两个字符串相等,Equals()返回值为True;否则,返回False。Equals方法的使用如下代码所示:/Equals Console.WriteLine(String.Equals(strA,strB);/false Console.WriteLine(strA.Equals(strB);/false,2023/3/16,11,C#程序设计实用教程,7.1.1 静态字符串String,(4)比较运算符 String支持两个比较运算符“=”、“!=”,分别用于判定两个字符是否相等和不等,并区分大小写。下例中,使用“=”、“!=”对“Hello”和“World”进行比较。/=和!=Console.WriteLine(strA=strB);/false Console.WriteLine(strA!=strB);/true,2023/3/16,12,C#程序设计实用教程,7.1.1 静态字符串String,2.定位字符和子串定位子串是指在一个字符串寻找其中包含的子串或者某个字符,在String类中,常用的定位子串和字符的方法包括StartWith/EndsWith、IndexOf/LastIndexOf以及IndexOfAny/LastIndexOf。,2023/3/16,13,C#程序设计实用教程,7.1.1 静态字符串String,(1)StartWith/EndsWith方法 StartWith方法可以判定一个字符串对象是否以另一个子字符串开头,如果是返回True;否则返回False。其定义为:public bool StartsWith(string value)其中,参数value即待判定的子字符串。/StartWith Console.WriteLine(strA.StartsWith(He);/true Console.WriteLine(strA.StartsWith(She);/false另外,EndsWith方法可以判定一个字符是否以另一个子字符串结尾。,2023/3/16,14,C#程序设计实用教程,7.1.1 静态字符串String,(2)IndexOf/LastIndexOf方法 IndexOf方法用于搜索一个字符串,某个特定的字符或子串第一次出现的位置,该方法区分大小写,并从字符串的首字符开始以计数。如果字符串中不包含这个字符或子串,则返回-1。定位字符:int IndexOf(char value)int IndexOf(char value,int startIndex)int IndexOf(char value,int startIndex,int count),2023/3/16,15,C#程序设计实用教程,7.1.1 静态字符串String,定位子串:int IndexOf(string value)int IndexOf(string value,int startIndex)int IndexOf(string value,int startIndex,int count)在上述重载形式中,其参数含义如下:Value:待定位的字符或者子串。startIndex:在总串中开始搜索的起始位置。Count:在总串中从起始位置开始搜索的字符数。,2023/3/16,16,C#程序设计实用教程,7.1.1 静态字符串String,下例在“Hello”中寻找字符“l”第一次出现的位置。/Indexof Console.WriteLine(strA.IndexOf(l);/2 同IndexOf类似,LastIndexOf用于搜索在一个字符串中,某个特定的字符或子串最后一次出现的位置,其方法定义和返回值都与IndexOf相同。,2023/3/16,17,C#程序设计实用教程,7.1.1 静态字符串String,(3)IndexOfAny/LastIndexOfAny IndexOfAny方法功能同IndexOf类似,区别在于,可以搜索在一个字符串中,出现在一个字符数组中的任意字符第一次出现的位置。,2023/3/16,18,C#程序设计实用教程,7.1.1 静态字符串String,下例在“Hello”中寻找字符“l”第一次和最后一次出现的位置。/IndexofAny|LastIndexOfAny char anyOf=H,e,l;Console.WriteLine(strA.IndexOfAny(anyOf);/0 Console.WriteLine(strA.LastIndexOfAny(anyOf);/3 同IndexOfAny类似,LastIndexOfAny用于搜索在一个字符串中,出现在一个字符数组中任意字符最后一次出现的位置。,2023/3/16,19,C#程序设计实用教程,7.1.1 静态字符串String,3.格式化字符串Format方法用于创建格式化的字符串以及连接多个字符串对象。Foramt方法也有多个重载形式,最常用的为:public static string Format(string format,params object args);其中,参数format用于指定返回字符串的格式,而args为一系列变量参数。,2023/3/16,20,C#程序设计实用教程,7.1.1 静态字符串String,/Format newStr=;newStr=String.Format(0,1!,strA,strB);Console.WriteLine(newStr);/Hello,World!在format参数中包含一些用大括号括起来的数字,如0、1,这些数字分别一一对应于args参数数组中的变量。在生成结果字符串时,将使用这些变量代替i。需要说明的是,这些变量并不要求必须为String类型。,2023/3/16,21,C#程序设计实用教程,7.1.1 静态字符串String,例如,想要输出一定格式的时间字符串,便可以使用Format方法,如下面代码所示。newStr=String.Format(CurrentTime=0:yyyy-MM-dd,System.DateTime.Now);Console.WriteLine(newStr);/形如:2008-09-19 其中,格式字符串“yyyy-MM-dd”指定返回时间的格式形如“2008-09-19”。,2023/3/16,22,C#程序设计实用教程,7.1.1 静态字符串String,4.连接字符串(1)Concat方法 Concat方法用于连接两个或多个字符串/Concat newStr=;newStr=String.Concat(strA,strB);Console.WriteLine(newStr);/“Hello World,2023/3/16,23,C#程序设计实用教程,7.1.1 静态字符串String,(2)Join方法 Join方法利用一个字符数组和一个分隔符串构造新的字符串。常用于把多个字符串连接在一起,并用一个特殊的符号来分隔开。Join方法的常用形式为:public static string Join(string separator,string values);其中,参数separator为指定的分隔符,而values用于指定所要连接的多个字符串数组。,2023/3/16,24,C#程序设计实用教程,7.1.1 静态字符串String,下例用“”分隔符把“Hello”和“World”连起来。/Join newStr=;String strArr=strA,strB;newStr=String.Join(,strArr);Console.WriteLine(newStr);/HelloWorld,2023/3/16,25,C#程序设计实用教程,7.1.1 静态字符串String,(3)连接运算符“+”String支持连接运算符“+”,可以方便地连接多个字符串。例如,下例把“Hello”和“World”连接起来。/+newStr=;newStr=strA+strB;Console.WriteLine(newStr);/HelloWorld,2023/3/16,26,C#程序设计实用教程,7.1.1 静态字符串String,5.分隔字符串使用Split方法可以把一个整串,按照某个分隔符,分裂成一系列小的字符串。例如,把整串,按照某个分隔符,分裂成一系列小的字符串。例如,把整串“HelloWorld”按照字符“”进行分裂,可以得到3个小的字符串,即“Hello”、“”(空串)和“World”。Split方法最常用的形式为:public string Split(params char separator);其中,参数separator数组包含分隔符。,2023/3/16,27,C#程序设计实用教程,7.1.1 静态字符串String,/Split newStr=HelloWorld;char separator=;String splitStrings=new String100;splitStrings=newStr.Split(separator);int i=0;while(isplitStrings.Length)Console.WriteLine(item0:1,i,splitStringsi);i+;,输出结果如下:Item0:Hello Item1:Item2:World,2023/3/16,28,C#程序设计实用教程,7.1.1 静态字符串String,6.插入和填充字符串String类包含了在一个字符串中插入新元素的方法,可以用Insert方法在任意插入任意字符。Insert方法用于在一个字符串的指定位置插入另一个字符串,从而构造一个新的串。Insert方法最常用的为:public string Insert(int startIndex,string value);其中,参数startIndex用于指定所要插入的位置,从开始索引;value指定所要插入的字符串。,2023/3/16,29,C#程序设计实用教程,7.1.1 静态字符串String,下例中,在“Hello”的字符“H”后面插入“World”,构造一个串“HWorldello”。/Insert newStr=;newStr=strA.Insert(1,strB);Console.WriteLine(newStr);/HWorldello,2023/3/16,30,C#程序设计实用教程,7.1.1 静态字符串String,7.删除和剪切字符串String类包含了删除一个字符串的方法。可以用Remove方法在任意位置删除任意长度的字符。也可以使用Trim/TrimeEnd/TrimStart方法剪切掉字符串中的一些特定字符。,2023/3/16,31,C#程序设计实用教程,7.1.1 静态字符串String,(1)Remove方法 Remove方法从一个字符串的指定位置开始,删除指定数量的字符。最常用的形式为:public string Remove(int startIndex,int count);其中,参数startIndex用于指定开始删除的位置,从开始索引;count指定删除的字符数量。下例中,把“Hello”中的“ell”删掉。/Remove newStr=;newStr=strA.Remove(1,3);Console.WriteLine(newStr);/Ho,2023/3/16,32,C#程序设计实用教程,7.1.1 静态字符串String,(2)Trim/TrimStart/TrimEnd方法 若想把一个字符串首尾处的一些特殊字符剪切掉,如去掉一个字符串首尾的空格等,可以使用String的Trim()方法。其形式如下:public string Trim()public string Trim(params char trimChars)其中,参数trimChars数组包含了指定要去掉的字符,如果缺省,则删除空格符号。下例中,实现了对“Hello#$”的净化,去掉首尾的特殊符号。,2023/3/16,33,C#程序设计实用教程,7.1.1 静态字符串String,/Trim newStr=;char trimChars=,#,$,;String strC=Hello#$;newStr=strC.Trim(trimChars);Console.WriteLine(newStr);/Hello 另外,同Trim类似,TrimStart和TrimEnd分别剪切掉一个字符串开头和结尾处的特殊字符。,2023/3/16,34,C#程序设计实用教程,7.1.1 静态字符串String,8.复制字符串String类包括了复制字符串方法Copy和CopyTo,可以完成对一个字符串及其一部分的复制操作。,2023/3/16,35,C#程序设计实用教程,7.1.1 静态字符串String,(1)Copy方法 若想把一个字符串复制到另一个字符数组中,可以使用String的静态方法Copy来实现,其形式为:public string Copy(string str);其中,参数str为需要复制的源字符串,方法返回目标字符串。下例中,把strA字符串“Hello”复制到newStr中。/Copy newStr=;newStr=String.Copy(strA);Console.WriteLine(newStr);/Hello,2023/3/16,36,C#程序设计实用教程,7.1.1 静态字符串String,(2)CopyTo方法 CopyTo方法可以实现Copy同样的功能,但功能更为丰富,可以复制字符串的一部分到一个字符数组中。其形式为:public void CopyTo(int sourceIndex,char destination,int destinationIndex,int count);其中,参数sourceIndex为需要复制的字符起始位置,destination为目标字符数组,destinationIndex指定目标数组中的开始存放位置,而count指定要复制的字符个数。,2023/3/16,37,C#程序设计实用教程,7.1.1 静态字符串String,下例中,把strA字符串“Hello”中的“ell”复制到newCharArr中,并在newCharArr中从第2个元素开始存放。/CopyTo char newCharArr=new char100;strA.CopyTo(2,newCharArr,0,3);Console.WriteLine(newCharArr);/”llo,2023/3/16,38,C#程序设计实用教程,7.1.1 静态字符串String,9.替换字符串想要替换一个字符串中的某些特定字符或者某个子串,可以使用Replace方法来实现,其形式为:public string Replace(char oldChar,char newChar);public string Replace(string oldValue,string newValue);其中,参数oldChar和oldValue为待替换的字符和子串,而newChar和newValue为替换后的新字符和新子串。下例把“Hello”通过替换变为“Hero”。/Replace newStr=strA.Replace(ll,r);Console.WriteLine(newStr);/Hero,2023/3/16,39,C#程序设计实用教程,7.1.1 静态字符串String,10.更改大小写String提供了方便转换字符串中所有字符大小写的方法ToUpper和ToLower。下例首先把“Hello”转换为“HELLO”,然后再变为小写形式“hello”。/ToUpper|ToLower newStr=strA.ToUpper();Console.WriteLine(newStr);/HELLO newStr=strA.ToLower();Console.WriteLine(newStr);/hello,2023/3/16,40,C#程序设计实用教程,7.1.1 静态字符串String,补充:提取子串利用字符串的提取子串方法Substring,就可从一个字符串中得到子字符串。Substring方法有两个参数,第一个参数指出从第几个位置开始截取,第二个参数指出共提取几个字符。截取以后的子串是另外一个字符串,而不是原来的字符串截短,原来的字符串不变。,2023/3/16,41,C#程序设计实用教程,7.1.1 静态字符串String,using System;class SubString public static void Main()string strOriginal=I loves China!;string strSub=strOriginal.Substring(2,12);Console.WriteLine(strOriginal:+strOriginal);Console.WriteLine(strSub:+strSub);string strTemp;for(int i=0;i strOriginal.Length;i+=2)strTemp=strOriginal.Substring(i,1);Console.Write(strTemp);,2023/3/16,42,C#程序设计实用教程,7.1.1 静态字符串String,程序运行结果如下:,2023/3/16,43,C#程序设计实用教程,7.1.1 静态字符串String,11.String小结本节介绍了最常用的String类,并从比较、定位子串、格式化、连接、分裂、插入、删除、复制、大小写转换10个方面介绍了其方法和应用。之所以称String对象为静态串,是因为一旦定义一个String对象,就是不可改变的。在使用其方法(如插入、删除操作)时,都要在内存中创建一个新的String对象,而不是在原对象的基础上进行修改,这就需要开辟新的内存空间。如果需要经常进行串修改操作,使用String类无疑是非常耗费资源的,这时需要使用StringBuilder类。,2023/3/16,44,C#程序设计实用教程,7.1.2 动态字符串StringBuilder,与String类相比,System.Text.StringBuilder类可以实现动态字符串。此外,动态的含义是指在修改字符串时,系统不需要创建新的对象,不会重复开辟新的内存空间,而是直接在原StringBuilder对象的基础上进行修改。,2023/3/16,45,C#程序设计实用教程,7.1.2 动态字符串StringBuilder,1.声明StringBuilder串StringBuilder类位于命名空间System.Text中,使用时,可以在文件头通过using语句引入该命名空间:using System.Text;声明StringBuilder对象需要使用new关键字,并可以对其进行初始化。如以下语句声明了一个StringBuilder对象myStringBuilder,并初始化为“Hello”:StringBuilder myStringBuilder=new StringBuilder(Hello);,2023/3/16,46,C#程序设计实用教程,7.1.2 动态字符串StringBuilder,2.设置StringBuilder容量StringBuilder对象为动态字符串,可以对其设置好的字符数量进行扩展。另外,还可以设置一个最大长度,这个最大长度称为该StringBuilder对象的容量(Capacity)。,2023/3/16,47,C#程序设计实用教程,7.1.2 动态字符串StringBuilder,有两种方式来设置一个StringBuilder对象的容量。(1)使用构造函数StringBuilder构造函数可以接受容量参数,例如,下面声明一个StringBuilder对象sb2,并设置其容量为100。/使用构造函数StringBuilder sb2=new StringBuilder(Hello,100);,2023/3/16,48,C#程序设计实用教程,7.1.2 动态字符串StringBuilder,(2)使用Capacity读/写属性Capacity属性指定StringBuilder对象的容量。例如下面语句首先一个StringBuilder对象sb3,然后利用Capacity属性设置其容量为100。/使用Capacity属性StringBuilder sb3=new StringBuilder(Hello);sb3.Capacity=100;,2023/3/16,49,C#程序设计实用教程,7.1.2 动态字符串StringBuilder,3.追加操作追加一个StringBuilder是指将新的字符串添加到当前StringBuilder字符串的结尾处,可以使用Append和AppendFormat来实现这个功能。(1)Append方法下例中,把一个StringBuilder字符串“Hello”追加为“Hello World!”。/Append StringBuilder sb4=new StringBuilder(Hello);sb4.Append(World!);Console.WriteLine(sb4);/Hello World!,2023/3/16,50,C#程序设计实用教程,7.1.2 动态字符串StringBuilder,(2)AppendFormat方法AppendFormat方法可以实现对追加部分字符串的格式化,可以定义变量的格式,并将格式化后的字符串追加在StringBuilder后面。,2023/3/16,51,C#程序设计实用教程,7.1.2 动态字符串StringBuilder,4.插入操作StringBuilder的插入操作是指将新的字符串插入到当前的StringBuilder字符串的指定位置,如“Hello”变为“Heeeello”。可以使用StringBuilder类的Insert方法来实现这个功能,常用形式为:public StringBuilder Insert(int index,object value);其中,参数index指定所要插入的位置,并从0开始索引,如index=1,则会在原字符串的第2个字符之前进行插入操作;同Append一样,参数value并不仅是只可取字符串类型。,2023/3/16,52,C#程序设计实用教程,7.1.2 动态字符串StringBuilder,下例中,把一个StringBuilder字符串“Hello”通过插入操作修改为“Heeeello”。/Insert StringBuilder sb6=new StringBuilder(Hello);sb6.Insert(2,eee);Console.WriteLine(sb6);/Heeeello,2023/3/16,53,C#程序设计实用教程,7.1.2 动态字符串StringBuilder,5.删除操作StringBuilder的删除操作可以从当前StringBuilder字符串的指定位置,删除一定数量的字符,例如把“Heeeello”变为“Hello”。可以使用StringBuilder类的Remove方法来实现这个功能,常用形式为:public StringBuilder Remove(int startIndex,int length);其中,参数startIndex指定所要删除的起始位置,其含义同Insert中的index相同;length参数指定所要删除的字符数量。,2023/3/16,54,C#程序设计实用教程,7.1.2 动态字符串StringBuilder,下例中,把一个StringBuilder字符串“Heeeello”通过删除操作修改为“Hello”。/Remove StringBuilder sb7=new StringBuilder(Heeello);sb7.Remove(2,2);/在”He”后面删除个字符Console.WriteLine(sb7);/Hello!,2023/3/16,55,C#程序设计实用教程,7.1.2 动态字符串StringBuilder,6.替换操作StringBuilder使用Replace方法来实现替换操作,例如把“Hello”变为“Hero”,就需要使用替换操作,将“ll”替换为“r”。这同String类的Replace方法非常类似,其常用形式包括:public StringBuilder Replace(char oldChar,char newChar);public StringBuilder Replace(string oldValue,string newValue);其中,参数oldChar和oldValue为待替换的字符和子串,而newChar和newValue为替换后的新字符和新子串。,2023/3/16,56,C#程序设计实用教程,7.1.2 动态字符串StringBuilder,下例把“Hello”通过替换为“Hero”。/Replace StringBuilder sb8=new StringBuilder(Hello);sb8=sb8.Replace(ll,r);Console.WriteLine(sb8);/Hero,2023/3/16,57,C#程序设计实用教程,7.1.2 动态字符串StringBuilder,7.与String比较可以看出StringBuilder与String在许多操作上是非常相似的。而在操作性能和内存效率方面,StringBuilder要比String好得多。而另一方面,String类提供了更多的方法,可以使开发能够更快地实现应用。在两者的选择上,如果应用对于系统性能、内存要求比较严格,以及经常处理大规模的字符串,推荐使用StringBuilder对象;否则,可以选择使用String。,2023/3/16,58,C#程序设计实用教程,7.2 数组,数组的作用非常强大,数据也是基本数据结构之一,是编程实现过程中必不可少的要素之一。,2023/3/16,60,C#程序设计实用教程,7.2.1 数组的概念,数组(Array)是一种数据结构,一个数组由若干个类型相同的数组元素的变量,这些变量可以通过一个数组名和数组下标(或者称为索引)来访问。C#中的数组下标是从零开始,数组中的所在元素都具有相同的类型。在数组中,每一个成员叫做数组元素,数组元素的类型称为数组类型,数组类型可以是C#中定义的任意类型,其中也包括数组类型本身。如果一个数组的类型不是数组类型,称之为一维数组。如果数组元素的类型是数组类型,就称之为多维数组,也就是说,数组定义可以嵌套。,2023/3/16,61,C#程序设计实用教程,7.2.1 数组的概念,无论是一维数组还是多维数组,每个维的下标都是从0开始,结束于这个维的数组长度减1。数组被用于各种目的,因为它提供了一种高效、方便的手段将相同类型的变量合成一组。例如,可以用数组保存一个月中每天的温度记录,货物平均价格的记录。数组的主要优点是,通过这样的一种方式组织数据使得数据容易被操纵。例如,有一个数组,它包括选定的一组学生的数学成绩,操作该数组,很容易计算其平均数学成绩。而且数据以这样的方式组织数据,会很容易实现对数据的排序。,2023/3/16,62,C#程序设计实用教程,7.2.1 数组的概念,在实际使用数据的过程中,一般是先确定数据类型,然后根据实际情况确定数组的长度。C#中的数组是由System.Array类派生而来的引用对象,因此可以使用Array类的方法来进行各种操作。另外,数组常常用来实现静态的操作,即不改变其空间大小,如查找、遍历等。数组也可以实现动态的操作、如插入、删除等,但不推荐使用,而应尽量使用集合来代替。,2023/3/16,63,C#程序设计实用教程,7.2.2 System.Array类,System.Array类是C#中各种数组的基类,其常用属性和方法的简单说明如表7-1所示。,2023/3/16,64,C#程序设计实用教程,7.2.3 一维数组,由具有一个下标的数组元素所构成的数组就是一维数组,一维数组是简单的数组。例如:为了记录50个银行储蓄用户的账号,就可以使用一个长度为50的一维数组来处理。一维数组比较直观,使用起来相对容易。,2023/3/16,65,C#程序设计实用教程,7.2.3 一维数组,1.一维数组的定义数据在使用前使用先进行定义。定义一维数组的格式如下:数据类型数组名:其中数组类型为各种数据类型,它表示数据元素的类型;数组名可以是C#合法的标识符;在数组名与数据类型之间是一组空的方括号。例如:char charArr;/定义了一个字符型的一维数组int intArr;/定义了一个整型一维数组string strArr;/定义了一个字符串类型一维数组在定义数组后,必须对其进行初始化才能使用;初始化数组有两种方法,即动态初始化和静态初始化。,2023/3/16,66,C#程序设计实用教程,7.2.3 一维数组,2.动态初始化动态初始化需要借助new运算符,为数组元素分配内存空间,并为数据元素赋初始值。动态初始化数组的格式如下:数组名=new 数据类型数组长度;在C#中,可以将数组定义与动态初始化合在一起,格式如下:数据类型数组名=new 数据类型数组长度;,2023/3/16,67,C#程序设计实用教程,7.2.3 一维数组,例如:int intArr=new int5;上面的语句定义了一个整型数组,它包含从intArr0到intArr4这5个元素。New运算符用于创建数组,并用默认值对数据元素进行初始化。在本例中,所有数组元素的值都被初始化为0。当然,用户也可以为其赋予初始化值,程序代码如下:int intArr=new int53,6,9,2,10;此时数组元素的初始化值就是大括号中列出的元素值。,2023/3/16,68,C#程序设计实用教程,7.2.3 一维数组,定义其他类型的数组的方法是一样的,如下面的语句用于定义一个存储10个字符串元素的数组,并对其进行初始化:string strArr=new string10;在本例中,strArr数组中所有数组元素的初始值都为“”。,2023/3/16,69,C#程序设计实用教程,7.2.3 一维数组,3.静态初始化静态初始化数组时,必须与数组定义结合在一起,否则程序就会报错。静态初始化数组的格式如下:数据类型 数据名=元素1,元素2;用这种方法对数组进行初始化时,无须说明数组元素的个数,只需按顺序列出数组中的全部元素即可,系统会自动计算并分配数组所需的内存空间。例如:int intArr=3,6,9,2,10;string strArr=“English”,”Maths”,”Computer”,”Chinese”;,2023/3/16,70,C#程序设计实用教程,7.2.3 一维数组,4.关于一维数据初始化的几点说明(1)动态初始化数组时,可以把定义与初始化分开在不同的语句中者,例如:int intArr;/定义数组intArr=new int5;/动态初始化,初始化元素的值均为0或者intArr=new int5 3,6,9,2,10;此时,在new int53,6,9,2,10这条语句中,方括号中表示数组元素个数的“”可以省略,因为后面大括号中已列出了数组中的全部元素。,2023/3/16,71,C#程序设计实用教程,7.2.3 一维数组,4.关于一维数据初始化的几点说明(2)静态初始化数组必须与数组结合在一条语句中,否则程序就会出错。(3)在数组初始化语句中,如果大括号中已明确列出了数组中的元素,即确定了元素个数,则表示数组元素个数的数值(即方括号中的数值)必须是常量,并且该数值必须与数组元素个数一致。,2023/3/16,72,C#程序设计实用教程,7.2.3 一维数组,5.访问一维数组中的元素在C#中是通过数组名和下标值来访问数组元素的。在访问数组元素时,其下标可以是一个整型常量或整型表达式。例如,下面的数组元素的下标都是合法的:intArr3,strArr0,intArrj,strArr2*i-1在实际的程序设计中,也可能导致下标值超越正常取值范围。如果下标越界,将会抛出一个System.IndexOutOfRangeException的异常。,2023/3/16,73,

    注意事项

    本文(C#常用数据结构与算法.ppt)为本站会员(李司机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开