數據結構是計算機存儲、組織數據的方式。
數據結構是指相互之間存在一種或多種特定關(guān)系的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來(lái)更高的運行或者存儲效率。
數據結構往往同高效的檢索算法和索引技術(shù)有關(guān)。算法的設計取決于數據(邏輯)結構,而算法的實(shí)現依賴(lài)于采用的存儲結構。
數據的存儲結構實(shí)質(zhì)上是它的邏輯結構在計算機存儲器中的實(shí)現,為了全面的反映一個(gè)數據的邏輯結構,它在存儲器中的映象包括兩方面內容,即數據元素之間的信息和數據元素之間的關(guān)系。不同數據結構有其相應的若干運算。
數據的運算是在數據的邏輯結構上定義的操作算法,如檢索、插入、刪除、更新和排序等。數據的運算是數據結構的一個(gè)重要方面,討論任一種數據結構時(shí)都離不開(kāi)對該結構上的數據運算及其實(shí)現算法的討論。
數據結構不同于數據類(lèi)型,也不同于數據對象,它不僅要描述數據類(lèi)型的數據對象,而且要描述數據對象各元素之間的相互關(guān)系。數據類(lèi)型是一個(gè)值的集合和定義在這個(gè)值集上的一組操作的總稱(chēng)。
數據類(lèi)型可分為兩類(lèi):原子類(lèi)型、結構類(lèi)型。一方面,在程序設計語(yǔ)言中,每一個(gè)數據都屬于某種數據類(lèi)型。
類(lèi)型明顯或隱含地規定了數據的取值范圍、存儲方式以及允許進(jìn)行的運算。可以認為,數據類(lèi)型是在程序設計中已經(jīng)實(shí)現了的數據結構。
另一方面,在程序設計過(guò)程中,當需要引入某種新的數據結構時(shí),總是借助編程語(yǔ)言所提供的數據類(lèi)型來(lái)描述數據的存儲結構。計算機中表示數據的最小單位是二進(jìn)制數的一位,叫做位。
我們用一個(gè)由若干位組合起來(lái)形成的一個(gè)位串表示一個(gè)數據元素,通常稱(chēng)這個(gè)位串為元素或結點(diǎn)。當數據元素由若干數據項組成時(shí),位串中對應于各個(gè)數據項的子位串稱(chēng)為數據域。
元素或結點(diǎn)可看成是數據元素在計算機中的映象。一個(gè)軟件系統框架應建立在數據之上,而不是建立在操作之上。
一個(gè)含抽象數據類(lèi)型的軟件模塊應包含定義、表示、實(shí)現三個(gè)部分。對每一個(gè)數據結構而言,必定存在與它密切相關(guān)的一組操作。
若操作的種類(lèi)和數目不同,即使邏輯結構相同,數據結構能起的作用也不同。不同的數據結構其操作集不同,但下列操作必不可缺:1,結構的生成;2.結構的銷(xiāo)毀;3,在結構中查找滿(mǎn)足規定條件的數據元素;4,在結構中插入新的數據元素;5,刪除結構中已經(jīng)存在的數據元素;6,遍歷。
抽象數據類(lèi)型:一個(gè)數學(xué)模型以及定義在該模型上的一組操作。抽象數據類(lèi)型實(shí)際上就是對該數據結構的定義。
因為它定義了一個(gè)數據的邏輯結構以及在此結構上的一組算法。抽象數據類(lèi)型可用以下三元組表示:(D,S,P)。
D是數據對象,S是D上的關(guān)系集,P是對D的基本操作集。ADT的定義為:ADT 抽象數據類(lèi)型名:{數據對象:(數據元素集合),數據關(guān)系:(數據關(guān)系二元組結合),基本操作:(操作函數的羅列)}; ADT抽象數據類(lèi)型名;抽象數據類(lèi)型有兩個(gè)重要特性:數據抽象 用ADT描述程序處理的實(shí)體時(shí),強調的是其本質(zhì)的特征、其所能完成的功能以及它和外部用戶(hù)的接口(即外界使用它的方法)。
數據封裝 將實(shí)體的外部特性和其內部實(shí)現細節分離,并且對外部用戶(hù)隱藏其內部實(shí)現細節。數據(Data)是信息的載體,它能夠被計算機識別、存儲和加工處理。
它是計算機程序加工的原料,應用程序處理各種各樣的數據。計算機科學(xué)中,所謂數據就是計算機加工處理的對象,它可以是數值數據,也可以是非數值數據。
數值數據是一些整數、實(shí)數或復數,主要用于工程計算、科學(xué)計算和商務(wù)處理等;非數值數據包括字符、文字、圖形、圖像、語(yǔ)音等。數據元素(Data Element)是數據的基本單位。
在不同的條件下,數據元素又可稱(chēng)為元素、結點(diǎn)、頂點(diǎn)、記錄等。例如,學(xué)生信息檢索系統中學(xué)生信息表中的一個(gè)記錄等,都被稱(chēng)為一個(gè)數據元素。
有時(shí),一個(gè)數據元素可由若干個(gè)數據項(Data Item)組成,例如,學(xué)籍管理系統中學(xué)生信息表的每一個(gè)數據元素就是一個(gè)學(xué)生記錄。它包括學(xué)生的學(xué)號、姓名、性別、籍貫、出生年月、成績(jì)等數據項。
這些數據項可以分為兩種:一種叫做初等項,如學(xué)生的性別、籍貫等,這些數據項是在數據處理時(shí)不能再分割的最小單位;另一種叫做組合項,如學(xué)生的成績(jì),它可以再劃分為數學(xué)、物理、化學(xué)等更小的項。通常,在解決實(shí)際應用問(wèn)題時(shí)是把每個(gè)學(xué)生記錄當作一個(gè)基本單位進(jìn)行訪(fǎng)問(wèn)和處理的。
數據對象(Data Object)或數據元素類(lèi)(Data Element Class)是具有相同性質(zhì)的數據元素的集合。在某個(gè)具體問(wèn)題中,數據元素都具有相同的性質(zhì)(元素值不一定相等),屬于同一數據對象(數據元素類(lèi)),數據元素是數據元素類(lèi)的一個(gè)實(shí)例。
例如,在交通咨詢(xún)系統的交通網(wǎng)中,所有的頂點(diǎn)是一個(gè)數據元素類(lèi),頂點(diǎn)A和頂點(diǎn)B各自代表一個(gè)城市,是該數據元素類(lèi)中的兩個(gè)實(shí)例,其數據元素的值分別為A和B。 數據結構(Data Structure)是指互相之間存在著(zhù)一種或多種關(guān)系的數據元素的集合。
在任何問(wèn)題中,數據元素之間都不會(huì )是孤立的,在它們之間都存在著(zhù)這樣或那樣的關(guān)系,這種數據元素之間的關(guān)系稱(chēng)為結構。
但是可以分類(lèi)。
以下是我查到的資料
算法可大致分為基本算法、數據結構的算法、數論與代數算法、計算幾何的算法、圖論的算法、動(dòng)態(tài)規劃以及數值分析、加密算法、排序算法、檢索算法、隨機化算法、并行算法。
算法可以宏泛的分為三類(lèi):
有限的,確定性算法 這類(lèi)算法在有限的一段時(shí)間內終止。他們可能要花很長(cháng)時(shí)間來(lái)執行指定的任務(wù),但仍將在一定的時(shí)間內終止。這類(lèi)算法得出的結果常取決于輸入值。
有限的,非確定算法 這類(lèi)算法在有限的時(shí)間內終止。然而,對于一個(gè)(或一些)給定的數值,算法的結果并不是唯一的或確定的。
無(wú)限的算法 是那些由于沒(méi)有定義終止定義條件,或定義的條件無(wú)法由輸入的數據滿(mǎn)足而不終止運行的算法。通常,無(wú)限算法的產(chǎn)生是由于未能確定的定義終止條件。
算法設計與分析的基本方法 1.遞推法
2.遞歸遞歸指的是一個(gè)過(guò)程:函數不斷引用自身,直到引用的對象已知
3.窮舉搜索法
窮舉搜索法是對可能是解的眾多候選解按某種順序進(jìn)行逐一枚舉和檢驗,并從眾找出那些符合要求的候選解作為問(wèn)題的解。
4.貪婪法貪婪法是一種不追求最優(yōu)解,只希望得到較為滿(mǎn)意解的方法。貪婪法一般可以快速得到滿(mǎn)意的解,因為它省去了為找最優(yōu)解要窮盡所有可能而必須耗費的大量時(shí)間。貪婪法常以當前情況為基礎作最優(yōu)選擇,而不考慮各種可能的整體情況,所以貪婪法不要回溯。
5.分治法把一個(gè)復雜的問(wèn)題分成兩個(gè)或更多的相同或相似的子問(wèn)題,再把子問(wèn)題分成更小的子問(wèn)題……直到最后子問(wèn)題可以簡(jiǎn)單的直接求解,原問(wèn)題的解即子問(wèn)題的解的合并。
6.動(dòng)態(tài)規劃法
動(dòng)態(tài)規劃是一種在數學(xué)和計算機科學(xué)中使用的,用于求解包含重疊子問(wèn)題的最優(yōu)化問(wèn)題的方法。其基本思想是,將原問(wèn)題分解為相似的子問(wèn)題,在求解的過(guò)程中通過(guò)子問(wèn)題的解求出原問(wèn)題的解。動(dòng)態(tài)規劃的思想是多種算法的基礎,被廣泛應用于計算機科學(xué)和工程領(lǐng)域。
7.迭代法迭代是數值分析中通過(guò)從一個(gè)初始估計出發(fā)尋找一系列近似解來(lái)解決問(wèn)題(一般是解方程或者方程組)的過(guò)程,為實(shí)現這一過(guò)程所使用的方法統稱(chēng)為迭代法。
算法策略就是在問(wèn)題空間中隨機搜索所有可能的解決問(wèn)題的方法,直至選擇一種有效的方法解決問(wèn)題。
算法策略間的關(guān)系編輯 1、對問(wèn)題進(jìn)行分解的算法策略——分治法與動(dòng)態(tài)規劃法 共同點(diǎn):(1)分治法與動(dòng)態(tài)規劃法實(shí)際上都是遞歸思想的運用 (2)二者的根本策略都是對問(wèn)題進(jìn)行分解,找到大規模與小規模的關(guān)系,然后通過(guò)解小規模的解,得出大規模的解 不同點(diǎn): 適用于分治法的問(wèn)題分解成子問(wèn)題后,各子問(wèn)題間無(wú)公共子子問(wèn)題,而動(dòng)態(tài)規劃法相反。 動(dòng)態(tài)規劃法 = 分治算法思想 + 解決子問(wèn)題間的冗余情況 2、多階段逐步解決問(wèn)題的策略——貪心算法和動(dòng)態(tài)規劃法 貪心算法:每一步都根據策略得到一個(gè)結果,并傳遞到下一步,自頂向下,一步一步地做出貪心決策。
動(dòng)態(tài)規劃算法:每一步?jīng)Q策得到的不是一個(gè)唯一結果,而是一組中間結果(且這些結果在以后各步可能得到多次引用),只是每一步都使問(wèn)題的規模逐步縮小,最終得到問(wèn)題的一個(gè)結果。 計算機能夠快速、準確地“計算”的最基本的原因,就是硬件與軟件的分離、程序與數據的分離。
這實(shí)際上也就是將我們人類(lèi)自然語(yǔ)言中的思想與方法、方法與對象、思想與對象實(shí)行了分離。由于這些分離,使得計算機的程序語(yǔ)言中的命令與數據,都能非常精確地指稱(chēng)計算機內存里面的確定區域。
這樣,計算機“計算”的時(shí)候,就不會(huì )象人類(lèi)大腦那樣,左半腦中的一個(gè)語(yǔ)詞指稱(chēng)的是一個(gè)幾乎難以確切地劃分出“邊界”的右半腦中的圖景,而是一塊有著(zhù)確定“地址”的內存區域。這樣,計算機就能夠達到快速準確地“計算”了。
但是可以分類(lèi)。
以下是我查到的資料
算法可大致分為基本算法、數據結構的算法、數論與代數算法、計算幾何的算法、圖論的算法、動(dòng)態(tài)規劃以及數值分析、加密算法、排序算法、檢索算法、隨機化算法、并行算法。
算法可以宏泛的分為三類(lèi):
有限的,確定性算法 這類(lèi)算法在有限的一段時(shí)間內終止。他們可能要花很長(cháng)時(shí)間來(lái)執行指定的任務(wù),但仍將在一定的時(shí)間內終止。這類(lèi)算法得出的結果常取決于輸入值。
有限的,非確定算法 這類(lèi)算法在有限的時(shí)間內終止。然而,對于一個(gè)(或一些)給定的數值,算法的結果并不是唯一的或確定的。
無(wú)限的算法 是那些由于沒(méi)有定義終止定義條件,或定義的條件無(wú)法由輸入的數據滿(mǎn)足而不終止運行的算法。通常,無(wú)限算法的產(chǎn)生是由于未能確定的定義終止條件。
算法設計與分析的基本方法 1.遞推法
2.遞歸遞歸指的是一個(gè)過(guò)程:函數不斷引用自身,直到引用的對象已知
3.窮舉搜索法
窮舉搜索法是對可能是解的眾多候選解按某種順序進(jìn)行逐一枚舉和檢驗,并從眾找出那些符合要求的候選解作為問(wèn)題的解。
4.貪婪法貪婪法是一種不追求最優(yōu)解,只希望得到較為滿(mǎn)意解的方法。貪婪法一般可以快速得到滿(mǎn)意的解,因為它省去了為找最優(yōu)解要窮盡所有可能而必須耗費的大量時(shí)間。貪婪法常以當前情況為基礎作最優(yōu)選擇,而不考慮各種可能的整體情況,所以貪婪法不要回溯。
5.分治法把一個(gè)復雜的問(wèn)題分成兩個(gè)或更多的相同或相似的子問(wèn)題,再把子問(wèn)題分成更小的子問(wèn)題……直到最后子問(wèn)題可以簡(jiǎn)單的直接求解,原問(wèn)題的解即子問(wèn)題的解的合并。
6.動(dòng)態(tài)規劃法
動(dòng)態(tài)規劃是一種在數學(xué)和計算機科學(xué)中使用的,用于求解包含重疊子問(wèn)題的最優(yōu)化問(wèn)題的方法。其基本思想是,將原問(wèn)題分解為相似的子問(wèn)題,在求解的過(guò)程中通過(guò)子問(wèn)題的解求出原問(wèn)題的解。動(dòng)態(tài)規劃的思想是多種算法的基礎,被廣泛應用于計算機科學(xué)和工程領(lǐng)域。
7.迭代法迭代是數值分析中通過(guò)從一個(gè)初始估計出發(fā)尋找一系列近似解來(lái)解決問(wèn)題(一般是解方程或者方程組)的過(guò)程,為實(shí)現這一過(guò)程所使用的方法統稱(chēng)為迭代法。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:2.472秒