C常用数据结构与算法.ppt
《C常用数据结构与算法.ppt》由会员分享,可在线阅读,更多相关《C常用数据结构与算法.ppt(147页珍藏版)》请在冰豆网上搜索。
第7章常用数据结构与算法,数据结构和算法是程序设计的基石。
本章重点讲述C#中的几个主要的数据结构类型:
字符串、数组和枚举。
本章还将介绍一些常用算法,如几种典型排序算法的C#实现。
2022/10/21,2,C#程序设计实用教程,7.1字符串,字符串是应用程序和用户交互的主要方式之一。
.NET提供了几个类来快速实现字符串操作,包括String、StringBuilder等。
2022/10/21,3,C#程序设计实用教程,7.1.1静态字符串String,System.String是最常用的字符串操作类。
下面从各个应用的角度对String类进行详细的介绍。
1.比较字符串比较字符串是指按照字典排序规则,判定两个字符的相对大小。
在String类中,常用的比较字符串的方法包括Compare、CompareTo、CompareOrdinal以及Equals。
2022/10/21,4,C#程序设计实用教程,串的基本概念,空串:
不含任何字符的串称为空串空格串:
由一个或多个空格组成的串,称为空格串。
串相等:
是指两个串的长度相等且对应的字符相等。
模式匹配:
确定子串在主串中首次出现位置的运算。
子串:
串中任意个连续的字符组成的子序列称为该串的子串。
主串:
包含子串的串称为该子串的主串。
7.1.1静态字符串String,
(1)Compare方法Compare方法是String类的静态方法,用于全面比较两个字符串对象。
下面使用Compare方法来比较两个字符串,输出结果如注释语句所示。
/定义两个String对象,并对其赋值System.StringstrA=Hello;System.StringstrB=World;,2022/10/21,7,C#程序设计实用教程,7.1.1静态字符串String,/CompareConsole.WriteLine(String.Compare(strA,strB);/-1Console.WriteLine(String.Compare(strA,strA);/0Console.WriteLine(String.Compare(strB,strA);/1,2022/10/21,8,C#程序设计实用教程,7.1.1静态字符串String,
(2)CompareTo方法CompareTo方法将当前字符串对象与另一个对象做比较,其作用与Compare类似,返回值也相同。
CompareTo与Compare相比,区别在于:
CompareTo不是静态方法,可以通过一个String对象调用;CompareTo没有重载形式,只能按照大小写敏感方式比较两个整串。
2022/10/21,9,C#程序设计实用教程,7.1.1静态字符串String,CompareTo方法的使用如下代码所示:
/定义两个String对象,并对其赋值System.StringstrA=Hello;System.StringstrB=World;/CompareToConsole.WriteLine(strA.CompareTo(strB);/-1,2022/10/21,10,C#程序设计实用教程,7.1.1静态字符串String,(3)Equals方法Equals方法用于方便地判定两个字符串是否相同,有两种重载形式:
publicboolEquals(string)publicstaticboolEquals(string,string)如果两个字符串相等,Equals()返回值为True;否则,返回False。
Equals方法的使用如下代码所示:
/EqualsConsole.WriteLine(String.Equals(strA,strB);/falseConsole.WriteLine(strA.Equals(strB);/false,2022/10/21,11,C#程序设计实用教程,7.1.1静态字符串String,(4)比较运算符String支持两个比较运算符“=”、“!
=”,分别用于判定两个字符是否相等和不等,并区分大小写。
下例中,使用“=”、“!
=”对“Hello”和“World”进行比较。
/=和!
=Console.WriteLine(strA=strB);/falseConsole.WriteLine(strA!
=strB);/true,2022/10/21,12,C#程序设计实用教程,7.1.1静态字符串String,2.定位字符和子串定位子串是指在一个字符串寻找其中包含的子串或者某个字符,在String类中,常用的定位子串和字符的方法包括StartWith/EndsWith、IndexOf/LastIndexOf以及IndexOfAny/LastIndexOf。
2022/10/21,13,C#程序设计实用教程,7.1.1静态字符串String,
(1)StartWith/EndsWith方法StartWith方法可以判定一个字符串对象是否以另一个子字符串开头,如果是返回True;否则返回False。
其定义为:
publicboolStartsWith(stringvalue)其中,参数value即待判定的子字符串。
/StartWithConsole.WriteLine(strA.StartsWith(He);/trueConsole.WriteLine(strA.StartsWith(She);/false另外,EndsWith方法可以判定一个字符是否以另一个子字符串结尾。
2022/10/21,14,C#程序设计实用教程,7.1.1静态字符串String,
(2)IndexOf/LastIndexOf方法IndexOf方法用于搜索一个字符串,某个特定的字符或子串第一次出现的位置,该方法区分大小写,并从字符串的首字符开始以计数。
如果字符串中不包含这个字符或子串,则返回-1。
定位字符:
intIndexOf(charvalue)intIndexOf(charvalue,intstartIndex)intIndexOf(charvalue,intstartIndex,intcount),2022/10/21,15,C#程序设计实用教程,7.1.1静态字符串String,定位子串:
intIndexOf(stringvalue)intIndexOf(stringvalue,intstartIndex)intIndexOf(stringvalue,intstartIndex,intcount)在上述重载形式中,其参数含义如下:
Value:
待定位的字符或者子串。
startIndex:
在总串中开始搜索的起始位置。
Count:
在总串中从起始位置开始搜索的字符数。
2022/10/21,16,C#程序设计实用教程,7.1.1静态字符串String,下例在“Hello”中寻找字符“l”第一次出现的位置。
/IndexofConsole.WriteLine(strA.IndexOf(l);/2同IndexOf类似,LastIndexOf用于搜索在一个字符串中,某个特定的字符或子串最后一次出现的位置,其方法定义和返回值都与IndexOf相同。
2022/10/21,17,C#程序设计实用教程,7.1.1静态字符串String,(3)IndexOfAny/LastIndexOfAnyIndexOfAny方法功能同IndexOf类似,区别在于,可以搜索在一个字符串中,出现在一个字符数组中的任意字符第一次出现的位置。
2022/10/21,18,C#程序设计实用教程,7.1.1静态字符串String,下例在“Hello”中寻找字符“l”第一次和最后一次出现的位置。
/IndexofAny|LastIndexOfAnycharanyOf=H,e,l;Console.WriteLine(strA.IndexOfAny(anyOf);/0Console.WriteLine(strA.LastIndexOfAny(anyOf);/3同IndexOfAny类似,LastIndexOfAny用于搜索在一个字符串中,出现在一个字符数组中任意字符最后一次出现的位置。
2022/10/21,19,C#程序设计实用教程,7.1.1静态字符串String,3.格式化字符串Format方法用于创建格式化的字符串以及连接多个字符串对象。
Foramt方法也有多个重载形式,最常用的为:
publicstaticstringFormat(stringformat,paramsobjectargs);其中,参数format用于指定返回字符串的格式,而args为一系列变量参数。
2022/10/21,20,C#程序设计实用教程,7.1.1静态字符串String,/FormatnewStr=;newStr=String.Format(0,1!
strA,strB);Console.WriteLine(newStr);/Hello,World!
在format参数中包含一些用大括号括起来的数字,如0、1,这些数字分别一一对应于args参数数组中的变量。
在生成结果字符串时,将使用这些变量代替i。
需要说明的是,这些变量并不要求必须为String类型。
2022/10/21,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”。
2022/10/21,22,C#程序设计实用教程,7.1.1静态字符串String,4.连接字符串
(1)Concat方法Concat方法用于连接两个或多个字符串/ConcatnewStr=;newStr=String.Concat(strA,strB);Console.WriteLine(newStr);/“HelloWorld,2022/10/21,23,C#程序设计实用教程,7.1.1静态字符串String,
(2)Join方法Join方法利用一个字符数组和一个分隔符串构造新的字符串。
常用于把多个字符串连接在一起,并用一个特殊的符号来分隔开。
Join方法的常用形式为:
publicstaticstringJoin(stringseparator,stringvalues);其中,参数separator为指定的分隔符,而values用于指定所要连接的多个字符串数组。
2022/10/21,24,C#程序设计实用教程,7.1.1静态字符串String,下例用“”分隔符把“Hello”和“World”连起来。
/JoinnewStr=;StringstrArr=strA,strB;newStr=String.Join(,strArr);Console.WriteLine(newStr);/HelloWorld,2022/10/21,25,C#程序设计实用教程,7.1.1静态字符串String,(3)连接运算符“+”String支持连接运算符“+”,可以方便地连接多个字符串。
例如,下例把“Hello”和“World”连接起来。
/+newStr=;newStr=strA+strB;Console.WriteLine(newStr);/HelloWorld,2022/10/21,26,C#程序设计实用教程,7.1.1静态字符串String,5.分隔字符串使用Split方法可以把一个整串,按照某个分隔符,分裂成一系列小的字符串。
例如,把整串,按照某个分隔符,分裂成一系列小的字符串。
例如,把整串“HelloWorld”按照字符“”进行