C#常用數(shù)據(jù)結(jié)構(gòu)和算法總結(jié)
1.數(shù)據(jù)
數(shù)據(jù)(Data)是外部世界信息的載體, 是能夠被計(jì)算機(jī)識(shí)別,加工,存儲(chǔ)的。在現(xiàn)實(shí)生活中也就是我們的產(chǎn)品原材料。
計(jì)算機(jī)中的數(shù)據(jù)包括數(shù)值數(shù)據(jù),圖片,影音資料等.
2. 數(shù)據(jù)元素和數(shù)據(jù)項(xiàng)
數(shù)據(jù)元素(Data Element)是數(shù)據(jù)的基本單位,在計(jì)算機(jī)處理的過程中通常是作為一個(gè)整體來作為處理的。
數(shù)據(jù)項(xiàng)(Data Item):一個(gè)數(shù)據(jù)元素通常由一個(gè)或多個(gè)數(shù)據(jù)項(xiàng)組成。
比如數(shù)據(jù)庫(kù)表:(Student),它有Id,Name,Sex,Age,Address等字段,而這張表又有多行數(shù)據(jù)。我們通常將這些字段就叫做數(shù)據(jù)項(xiàng),每行數(shù)據(jù)
就叫做數(shù)據(jù)元素。在某些情況下數(shù)據(jù)元素又稱為元素,節(jié)點(diǎn),紀(jì)錄等。
數(shù)據(jù)項(xiàng)分為兩種:(1)初等項(xiàng);(2)組合項(xiàng)[也就是可以分為更小的項(xiàng),比如人可以再分為歐洲人,亞洲人,非洲人]
3.數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)(Data Structure) 是在相互之間存在的一種或多種特定關(guān)系的數(shù)據(jù)元素集合.
眾所周知,在計(jì)算機(jī)中任何數(shù)據(jù)元素都不可能是單一或孤立存在的,它們之間都存在著一定的關(guān)系。就和人類體系結(jié)構(gòu)一樣,人不可能是孤立而與外界沒有關(guān)系的。
數(shù)據(jù)結(jié)構(gòu)分為四種:
(1)集合[Set]
(2)線性結(jié)構(gòu)[Linear Structure] (常見的線性結(jié)構(gòu)數(shù)據(jù),數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù))
(3)樹形結(jié)構(gòu)[Tree Structure] (樹狀結(jié)構(gòu),就好像人類的繼承關(guān)系,在計(jì)算機(jī)中xml文件存儲(chǔ)數(shù)據(jù)最為典型)
(4)圖形結(jié)構(gòu)[Graphic Structure] (圖形結(jié)構(gòu)也是相對(duì)比較復(fù)雜的,因?yàn)榇嬖诙鄬?duì)多的關(guān)系,計(jì)算機(jī)網(wǎng)絡(luò)拓?fù)?
4.數(shù)據(jù)對(duì)象
數(shù)據(jù)對(duì)象(Data Object),性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)(Data) 的一個(gè)子集。{“aa”,"bb","cc","dd"} 我們就可以將其看做是一個(gè)數(shù)據(jù)對(duì)象,都是字符長(zhǎng)度的集合。
5.數(shù)據(jù)類型
數(shù)據(jù)類型(Data Type) ,從上面的數(shù)據(jù)對(duì)象我們可以引申出數(shù)據(jù)類型這個(gè)概念,很多時(shí)間數(shù)據(jù)類型在C#,Java 等高級(jí)程序語(yǔ)言中說的比較多
數(shù)據(jù)類型分為兩種:
(1) 非結(jié)構(gòu)的原子類型 (在C#也就是基本數(shù)據(jù)類型,如int,string,long 等)
(2)結(jié)構(gòu)類型,可以由多個(gè)結(jié)構(gòu)類型組成,并可以分解。而結(jié)構(gòu)類型可以包含結(jié)構(gòu)類型和非結(jié)構(gòu)的原子類型
6.算法
算法: 一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問題的策略機(jī)制。
一個(gè)算法的優(yōu)劣可以使用空間復(fù)雜度和時(shí)間復(fù)雜度來衡量。其中算法有五個(gè)特征:
(1)有窮性: 算法中每條指令的執(zhí)行次數(shù)有限,執(zhí)行每條指令的時(shí)間有限
(2)確切性: 算法的每一步驟必須有確切的定義
(3)輸入: 一個(gè)算法有0個(gè)或多個(gè)輸入,以刻畫運(yùn)算對(duì)象的初始情況,所謂0個(gè)輸入是指算法本身定除了初始條件
(4)輸出: 一個(gè)算法有一個(gè)或多個(gè)輸出,以反映對(duì)輸入數(shù)據(jù)加工后的結(jié)果。沒有輸出的算法是毫無意義的
(5)可行性:算法中執(zhí)行的任何計(jì)算步都是可以被分解為基本的可執(zhí)行的操作步,即每個(gè)計(jì)算步都可以在有限時(shí)間內(nèi)完成
算法分類: 基本算法,數(shù)據(jù)結(jié)構(gòu)算法,數(shù)論與代數(shù)算法,計(jì)算幾何算法,圖論算法,動(dòng)態(tài)規(guī)則與數(shù)據(jù)分析,加密算法,排序算法,檢索算法,隨機(jī)化算法,并行算法
7. 復(fù)雜度
算法的復(fù)雜度可以使用 時(shí)間復(fù)雜度 和 空間復(fù)雜度 來衡量。
時(shí)間復(fù)雜度:算法的時(shí)間復(fù)雜度是指算法需要消耗的時(shí)間資源
空間復(fù)雜度: 算法的空間復(fù)雜度是指算法需要消耗的空間資源
8.數(shù)據(jù)的物理結(jié)構(gòu)
數(shù)據(jù)的物理結(jié)構(gòu)(Physical Structure) 又稱為 存儲(chǔ)結(jié)構(gòu),是數(shù)據(jù)在計(jì)算機(jī)中的表示和存儲(chǔ),包括數(shù)據(jù)元素的表示和存儲(chǔ)以及數(shù)據(jù)元素關(guān)系的表示和存儲(chǔ)。
數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)分為:(1)順序存儲(chǔ)結(jié)構(gòu).(2)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
順序存儲(chǔ)結(jié)構(gòu):通過數(shù)據(jù)元素在計(jì)算機(jī)存儲(chǔ)器上的相對(duì)位置來表示數(shù)據(jù)元素的邏輯關(guān)系,一般把邏輯相鄰的數(shù)據(jù)元素存儲(chǔ)在物理位置相鄰的存儲(chǔ)單元中。
C# 中的數(shù)組結(jié)構(gòu)就是典型的順序存儲(chǔ)結(jié)構(gòu)方式。
鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu):相鄰元素不需要在物理存儲(chǔ)位置單元相鄰,它們而是通過存儲(chǔ)相鄰數(shù)據(jù)元素的地址來維護(hù)關(guān)系。地址我們通常稱之為為引用(Reference)
備注:此篇文章只是總結(jié)了數(shù)據(jù)結(jié)構(gòu)方面的一些概念,我們?cè)趯W(xué)習(xí)編程的時(shí)候經(jīng)常說數(shù)據(jù),復(fù)雜度等等這些概念,至于這數(shù)據(jù),復(fù)雜度等等到底是什么東西我們也沒有去研究過,這里總結(jié)了一些知識(shí)點(diǎn)可以幫助大家理解這些概念。
以上這篇C#常用數(shù)據(jù)結(jié)構(gòu)和算法總結(jié)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持我們。
上一篇:解決安裝VS2008無法更改默認(rèn)路徑的問題
欄 目:C#教程
下一篇:C#中構(gòu)造函數(shù)和析構(gòu)函數(shù)用法實(shí)例詳解
本文標(biāo)題:C#常用數(shù)據(jù)結(jié)構(gòu)和算法總結(jié)
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6401.html
您可能感興趣的文章
- 01-10Extjs4如何處理后臺(tái)json數(shù)據(jù)中日期和時(shí)間
- 01-10C#中DataGridView常用操作實(shí)例小結(jié)
- 01-10C#及WPF獲取本機(jī)所有字體和顏色的方法
- 01-1010個(gè)C#程序員經(jīng)常用到的實(shí)用代碼片段
- 01-10同步調(diào)用和異步調(diào)用WebService
- 01-10C#編程自學(xué)之?dāng)?shù)據(jù)類型和變量二
- 01-10C#編程自學(xué)之?dāng)?shù)據(jù)類型和變量三
- 01-10C#編程自學(xué)之運(yùn)算符和表達(dá)式
- 01-10C#裝箱和拆箱原理詳解
- 01-10C#編程自學(xué)之類和對(duì)象


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻 器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實(shí)例總結(jié)
- 04-02jquery與jsp,用jquery
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?