溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

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

發(fā)布時(shí)間:2021-09-01 11:15:39 來(lái)源:億速云 閱讀:149 作者:chen 欄目:編程語(yǔ)言

這篇文章主要介紹“C#時(shí)間復(fù)雜度、空間復(fù)雜度、遞歸與接口的基本概念”,在日常操作中,相信很多人在C#時(shí)間復(fù)雜度、空間復(fù)雜度、遞歸與接口的基本概念問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”C#時(shí)間復(fù)雜度、空間復(fù)雜度、遞歸與接口的基本概念”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

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

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

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

1、

i=n;  x=0;  while(x< i)  {   x=x+1;   //這是個(gè)是一重循環(huán),時(shí)間復(fù)雜度為T(mén)(n)=0(n)  }

2、

int re=0;  for(int i=0;i< n;i++)  {    for(int k=0;k< n;k++)    {      re=re+(i*j);  //這是個(gè)是二重循環(huán),時(shí)間復(fù)雜度為T(mén)(n)=0(n*n)    }  }

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

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

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

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

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

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

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

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

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

public interface IBook  {      string ShowBook();      string GetTitle();      int GetPages();      void SetPages(int pages);  }   public class NewBook : IBook  {      public string title;      public int pages;      public string author;       public NewBook(string title, string author, int pages)      {          this.title = title;          this.author = author;          this.pages = pages;      }       public string GetTitle()      {          return title;      }       public int GetPages()      {          return pages;      }       public void SetPages(int pages)      {          this.pages = pages;      }       public string ShowBook()      {          return title + "," + author + "," + pages;      }   }   private void button1_Click(object sender, EventArgs e)  {     NewBook nb = new NewBook("A", "James", 200);     richTextBox1.Text = nb.ShowBook();  }

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

到此,關(guān)于“C#時(shí)間復(fù)雜度、空間復(fù)雜度、遞歸與接口的基本概念”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI