C#基本概念:时间复杂度,空间复杂度,递归与接口

在开始前先提出二个C#基本概念:时间复杂度与空间复杂度。

时间复杂度是指该算法的运行时间与问题规模的对应的关系。时间复杂度用T(n)=0(f(n)来表示,其中0表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,如果一个没有循环的代码,算法的执行频度是不会变的,记作0(1)。当算法中有一个一重循环,那执行频率就会呈线性增长0(n*n)...等等。

光看这个表达式还是很抽象的,下面来二个例子:

1、

 
 
 
  1. i=n;  
  2. x=0;  
  3. while(x< i)  
  4. {  
  5.  x=x+1;   //这是个是一重循环,时间复杂度为T(n)=0(n)  

2、

 
 
 
  1. int re=0;  
  2. for(int i=0;i< n;i++)  
  3. {  
  4.   for(int k=0;k< n;k++)  
  5.   {  
  6.     re=re+(i*j);  //这是个是二重循环,时间复杂度为T(n)=0(n*n)  
  7.   }  

空间复杂度是指该算法的运行过程中临时占用的存储空间的大小。一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量,算法执行时间的度量不是采用算法执行的绝对时间来计算的,因为一个算法在不同的机器上执行所花的时间不一样,在不同时刻也会由于计算机资源占用情况的不同,使得算法在同一台计算机上执行的时间也不一样,所以对于算法的时间复杂性,采用算法执行过程中其基本操作的执行次数,称为计算量来度量。

下面再次提出两个C#基本概念:递归与接口

递归是指算法调用自己来完成它的工作。这个概念无论在算法上还是实现代码编写中都很重要,经常大家去面试时,都会有一条这样的考题,在深圳这边,我以前面试过的公司一般都有一条兔子数列。按我的看法,我在做题时就是使用递归算法来做的。

例:1,1,2,3,5,8,13,21,34,55,89,……求第20位

其实就是一个这样的递归关系:  f(n):=f(n-1)+f(n-1)

接口是指类之间交互遵守的一个协议。

下面列出常用的接口IComparable,IEnumerable,IEnumerator,ICollection,IDictionary,IList

包插其对应的泛型接口。

下面看一个接口的例子:

 
 
 
  1. public interface IBook  
  2. {  
  3.     string ShowBook();  
  4.     string GetTitle();  
  5.     int GetPages();  
  6.     void SetPages(int pages);  
  7. }  
  8.  
  9. public class NewBook : IBook  
  10. {  
  11.     public string title;  
  12.     public int pages;  
  13.     public string author;  
  14.  
  15.     public NewBook(string title, string author, int pages)  
  16.     {  
  17.         this.title = title;  
  18.         this.author = author;  
  19.         this.pages = pages;  
  20.     }  
  21.  
  22.     public string GetTitle()  
  23.     {  
  24.         return title;  
  25.     }  
  26.  
  27.     public int GetPages()  
  28.     {  
  29.         return pages;  
  30.     }  
  31.  
  32.     public void SetPages(int pages)  
  33.     {  
  34.         this.pages = pages;  
  35.     }  
  36.  
  37.     public string ShowBook()  
  38.     {  
  39.         return title + "," + author + "," + pages;  
  40.     }  
  41.  
  42. }  
  43.  
  44. private void button1_Click(object sender, EventArgs e)  
  45. {  
  46.    NewBook nb = new NewBook("A", "James", 200);  
  47.    richTextBox1.Text = nb.ShowBook();  
  48. }  

这里会输出 A,James,200,在NewBook类中不能少写一个Ibook已经定义的方法,这样可以对外完全限定类从外面接入的方法。

这些都是最基础的C#基本概念,需要牢牢掌握。

分享文章:C#基本概念:时间复杂度,空间复杂度,递归与接口
URL分享:http://www.shufengxianlan.com/qtweb/news26/313276.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联