自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#基本概念:時(shí)間復(fù)雜度,空間復(fù)雜度,遞歸與接口

開發(fā) 后端
本文介紹了一些C#基本概念,包括時(shí)間復(fù)雜度與空間復(fù)雜度,以及遞歸和接口。

在開始前先提出二個(gè)C#基本概念:時(shí)間復(fù)雜度與空間復(fù)雜度。

時(shí)間復(fù)雜度是指該算法的運(yùn)行時(shí)間與問題規(guī)模的對(duì)應(yīng)的關(guān)系。時(shí)間復(fù)雜度用T(n)=0(f(n)來表示,其中0表示隨問題規(guī)模n的增大,算法執(zhí)行時(shí)間的增長(zhǎng)率和f(n)的增長(zhǎng)率相同,如果一個(gè)沒有循環(huán)的代碼,算法的執(zhí)行頻度是不會(huì)變的,記作0(1)。當(dāng)算法中有一個(gè)一重循環(huán),那執(zhí)行頻率就會(huì)呈線性增長(zhǎng)0(n*n)...等等。

光看這個(gè)表達(dá)式還是很抽象的,下面來二個(gè)例子:

1、

  1. i=n;  
  2. x=0;  
  3. while(x< i)  
  4. {  
  5.  x=x+1;   //這是個(gè)是一重循環(huán),時(shí)間復(fù)雜度為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);  //這是個(gè)是二重循環(huán),時(shí)間復(fù)雜度為T(n)=0(n*n)  
  7.   }  

空間復(fù)雜度是指該算法的運(yùn)行過程中臨時(shí)占用的存儲(chǔ)空間的大小。一個(gè)算法的優(yōu)劣主要從算法的執(zhí)行時(shí)間和所需要占用的存儲(chǔ)空間兩個(gè)方面衡量,算法執(zhí)行時(shí)間的度量不是采用算法執(zhí)行的絕對(duì)時(shí)間來計(jì)算的,因?yàn)橐粋€(gè)算法在不同的機(jī)器上執(zhí)行所花的時(shí)間不一樣,在不同時(shí)刻也會(huì)由于計(jì)算機(jī)資源占用情況的不同,使得算法在同一臺(tái)計(jì)算機(jī)上執(zhí)行的時(shí)間也不一樣,所以對(duì)于算法的時(shí)間復(fù)雜性,采用算法執(zhí)行過程中其基本操作的執(zhí)行次數(shù),稱為計(jì)算量來度量。

下面再次提出兩個(gè)C#基本概念:遞歸與接口

遞歸是指算法調(diào)用自己來完成它的工作。這個(gè)概念無論在算法上還是實(shí)現(xiàn)代碼編寫中都很重要,經(jīng)常大家去面試時(shí),都會(huì)有一條這樣的考題,在深圳這邊,我以前面試過的公司一般都有一條兔子數(shù)列。按我的看法,我在做題時(shí)就是使用遞歸算法來做的。

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

其實(shí)就是一個(gè)這樣的遞歸關(guān)系:  f(n):=f(n-1)+f(n-1)

接口是指類之間交互遵守的一個(gè)協(xié)議。

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

包插其對(duì)應(yīng)的泛型接口。

下面看一個(gè)接口的例子:

  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. }  

這里會(huì)輸出 A,James,200,在NewBook類中不能少寫一個(gè)Ibook已經(jīng)定義的方法,這樣可以對(duì)外完全限定類從外面接入的方法。

這些都是最基礎(chǔ)的C#基本概念,需要牢牢掌握。

【編輯推薦】

  1. 討論一下C#面向集合的擴(kuò)展
  2. C#3.0中Lambda表達(dá)式詳解
  3. 淺談C#泛型的用處
  4. 淺談C#如何實(shí)現(xiàn)多繼承
  5. C#實(shí)用基礎(chǔ)教程
責(zé)任編輯:yangsai 來源: cnBlogs
相關(guān)推薦

2024-04-25 08:33:25

算法時(shí)間復(fù)雜度空間復(fù)雜度

2021-01-05 10:41:42

算法時(shí)間空間

2020-12-30 05:35:56

數(shù)據(jù)結(jié)構(gòu)算法

2021-10-15 09:43:12

希爾排序復(fù)雜度

2021-09-17 10:44:50

算法復(fù)雜度空間

2024-06-05 09:35:00

2019-11-18 12:41:35

算法Python計(jì)算復(fù)雜性理論

2021-06-28 06:15:14

算法Algorithm時(shí)間空間復(fù)雜度

2018-12-18 10:11:37

軟件復(fù)雜度軟件系統(tǒng)軟件開發(fā)

2020-12-30 09:20:27

代碼

2015-10-13 09:43:43

復(fù)雜度核心

2019-12-24 09:46:00

Linux設(shè)置密碼

2022-08-16 09:04:23

代碼圈圈復(fù)雜度節(jié)點(diǎn)

2020-02-06 13:59:48

javascript算法復(fù)雜度

2021-07-29 11:30:54

遞歸算法

2020-11-30 06:26:31

算法時(shí)間表示法

2014-07-01 15:49:33

數(shù)據(jù)結(jié)構(gòu)

2020-06-01 08:42:11

JavaScript重構(gòu)函數(shù)

2024-05-20 09:04:29

時(shí)間復(fù)雜度代碼

2014-12-10 09:23:14

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)