C# 資料結構 基礎 論述

來源:互聯網
上載者:User

標籤:

 

 

問題:

資訊世界中,電腦是加工處理的資訊的載體,在這個過程中面臨著三個問題:

1.如何方便高效的組織資料

2.如何在電腦中儲存資料(記憶體和外存)

3.如何對儲存的資料進行高效的操作

 

目的:

我們都知道,我們都會表述一件事,老闆交代你一件事情,你要陳述給你的員工,讓他們明白你的意思,有些人可能簡要的幾句話

就把事情表達清楚,可是有的人說了一大堆才明白他說什麼,這個比喻不太恰當,同樣在面對同一個程式的時候我們就可以出現兩

種程式:有的人寫出來的程式效率很高,有的人卻用複雜的方法來解決一個簡單的問題。

簡而言之目的有三個:

1.形成自己資料結構知識庫

2.提高程式設計水平

3.提供者設計者的基本技能

 

 

 

基本概念和術語

1.資料(Data):能被電腦識別的資訊的載體,數值資料,聲音,文字等等

2.資料元素(Data Element)和資料項目(Data Item)DE:資料的實體 DI:資料的屬性 最常見的是資料表的一條記錄(使用者) 和

欄位(使用者名稱,密碼,性別等等)

3.資料對象(Data Object)性質相同的資料元素的集合 例如:{0,1,2,3,4} , {a,b,c,d} , {使用者A,使用者B,使用者C….}

4.資料類型(Data Type)int,string等等

 

5.資料結構(Data Structure) 在資料集合的基礎上組織起來的有關係資料結構,通常有四類節本資料結構:A集合 B線性結構 C樹形結

構 D 網狀結構或者圖形結構

 

 

A Set   B Linear Structure      C Tree Structure     D Graphic Structure

資料結構記做 DS(Data Structure) 是一個二元組 DS=(D,R) D是有限的資料元素集合 R 是元素之間關係

 

 

通過例子理解後三種資料結構:

 

B 線性資料結構 學生資訊表

一行:資料元素 列:資料項目  元素與元素的關係:1對1

 

 

 

 

C 樹形結構 家譜

 

 

 

 

這個不多解釋。節點:資料元素  關係:一對多 或者 多對一

 

 

D 圖形結構

 

 

 

 

圖形結構:交通圖 元素:城市 關係多對多

 

資料結構

包括資料的邏輯結構和資料的物理結構,物理結構也叫儲存結構,我們討論資料結構的目的是為了在電腦中實

現對它的操作,還要在電腦表示和儲存,資料存放區結構分為:順序儲存結構和鏈式儲存結構,順序儲存結構:是把相鄰

資料存放區在物理上相同儲存單元中,在C#中用數組來實現順序儲存,最常見的是 數組;鏈式儲存,Node+Reference

Domain 在.net 中記憶體棧區和堆區,棧順序儲存,對應的對象在堆中,則指向了堆中的地址。

 

演算法

演算法與資料結構關係非常密切。

演算法的特性:1有窮性  2確定性  3輸出和輸出 4能行性

評定標準:1正確性  2可讀性 3健壯性  4已耗用時間(時間複雜度Time Complexity)  5佔用空間(空間複雜度Space Complexity)

影響效能因素:1.硬體條件  2.實現電腦的語言(語言越進階 效率越低) 3程式設計語言的編譯器和解譯器 4 作業系統

 

演算法的時間複雜度

演算法是由控制結構和原操作構成的,其執行的時間取決於二者的綜合效果。為了便於比較同一問題的不同演算法,通常把演算法中基本操作

重複執行的次數(頻度)作為演算法的時間複雜度。T(n)=0(f(n)),如果一個演算法沒有迴圈語句,那麼演算法中的節本操作的執行頻率與問題

無關,記做0(1),也成為常數階,如果演算法只有一重迴圈納悶演算法執行頻率與問題規模N呈線性增大關係,記做 0(n),也叫線性階

常用的還有平方階乘0(n*n) 立方階0(n*n*n)等等

例 1:x=n;

y=0;

while(y<x)

{

y=y+1; // T(n) 時間複雜度

}

 這是一個一重迴圈,迴圈次數為N 時間複雜度為線性:記做T(n)=0(0)

例 2:for(i=1;i<n;i++)

{

  for(j=0;j<n;j++)

{

   A[i][j]=i*j; //T(n) 時間複雜度

}

}

雙重迴圈 外層迴圈的迴圈次數是 N 內層for迴圈次數為 N 時間複雜度 T(n)=0(n*n);

 

例3 : x=n;

y=0;

while(x>=(y+1)*(y+1))

{

y=y+1; //T(n) 時間複雜度

}

 

一重迴圈 while 的迴圈次數為 根號 N 所以時間複雜度 T(n)=0(根號N)

 

例4 :for(i=0;i<m;i++)

{

for(j=0;j<t;j++)

{

    for(k=0;k<n;k++)

    {

      c[i][j]=c[i][j]+a[i][k]*b[k][j];//T(n) 時間複雜度 被執行次數

    }

}

}

三重迴圈:時間複雜度 T(n)=0(m*t*j);

 

數學基本概念

想到演算法就不得不想到數學,集合標記法:窮舉法S={0,5,8,9} 描述法:S={x|x是偶數,且0<X<10};

集合的特點:確定性,互異性,無序性

1000個不同編碼需要多少位?⌈log21000⌉=10 位

10 位可以表示多少個不同的編碼? 10 位可以產生 1024 個不同的可用編碼

經典的例子:折半演算法 打個不靠譜的比喻啊 網線壞了 不知道那個地方壞了 網線為100米(最大了)要查多

少次,才能找到故障點,使用折半演算法(也叫二分尋找法)log2 100 次

指數和對數是基本概念也是相互轉化的過程。

 

C# 知識點:介面 Icomparable,IEnumerable,IEnumberator,ICollection,IDictionary,IList

,裝箱拆箱,泛型

 

未完待續……

C# 資料結構 基礎 論述

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.