范玉紅
【摘要】 在電子計算機技術中,數據結構是將其與信息連接在一起的一個重要部分,也是很多從事電子科技研究人員進行學習所必須掌握的一門基礎性課程。在實際教學中,多數學生對于數據結構、算法以及程序之間的關系并不很了解,在國內的相關教材上的講解也不深入,導致學生對其關系較為困惑。本文基于對數據結構、算法和程序之間的關系進行一定的了解,就實現算法設計和算法實現這兩個方面的講解對數據結構、算法和程序之間的關系進行分析。
【關鍵詞】 數據結構 算法 程序
一、數據結構的研究內容
1、數據結構的概念。隨著軟件技術的發展,數據結構與算法已經成為軟件開發工程師必備的程序設計是數據結構的基礎和實現方法。數據是人們將文字符號、數字符號和其他規定符號表述為現實中發生的事情和產生的活動的一種描述。在生活中,我們所使用的文字和數字來表示我們的世界,例如商品的價格會用貨幣數量來表示。在計算機的世界里,數據就扮演了這個角色,將數據輸入到電腦中,電腦就能自動的識別信息,完成工作。數據結構相對于數據來說是表述數據之間的關系的一種集合,數據結構完全可以只講數據的存儲方法和算法的邏輯邏輯過程,可以不涉及具體實現過程,在實現一種數據的存儲和一個算法的求解過程時。數據結構在應用中,可以選擇應用不同的程序設計語言來達到目的,同一個算法,既可以使用VB實現,也可以選擇C、C++、JAVA、或者C#來實現,而在選定某一工具來實現算法時,程序設計的具體指令和方法是由所選擇的程序設計語言的語法決定。
2、數據結構的分類。在進行數據結構研究時,一般來說包括下面的幾個部分:1)數據元素間的邏輯關系;2)數據元素的儲存關系;3)數據元素的儲存方式;4)數據結構上的運算方法。在數據結構中,較為常見的結構有集合、線性結構、樹形結構、圖形結構幾種,常見的數據儲存結構有順序存儲結構、索引存儲結構等等。
二、算法分析
1、算法的意義。算法是研究實際問題中按照一定的編寫步驟得到結果的過程,一般來說分為有解和無解兩種結果形式,算法在計算機技術中占有重要的地位,是計算機解決問題時必不可少的過程。當我們進行某個實際問題的計算時,通過計算機進行對實際問題的解決辦法、解決思路的理清,需要通過算法來進一步實現。在解決問題時,算法中包含的等待執行的命令和運算過程是解決問題的基本,計算機在進行計算時通過對算法中各步驟的要求遵循算法的計算過程和方法,計算機不需要對操作進行理解就能夠實現解決問題得出相應的結果。
2、算法的構成。一般來說,算法中包含有操作、控制結構、數據結構這三個部分,算法在執行命令時經過這三部分的計算得出正確的結果。
3、算法分析。算法分析的應用是為了進行設計具體的算法,在數學工具的輔助下,算法分析對每一種算法的復雜程度、計算過程、計算結果進行一定的分析,能夠在一定程度上實現分析出這種算法在實際應用中的綜合能力,包括其優點和缺點的具體分析結果和解決問題的實際能力、效率。
算法分析中對算法的定義和評估一般有三個部分:1)算法進行的時間,是評估中最為重要的一部分;2)算法的存儲空間大小,主要是輔助儲存空間的大小;3)算法實際應用中的能力,主要是算法是否容易理解和調整。
三、算法和數據結構之間的關系
1、二者之間的聯系。我們現在普遍認為,數據結構與算法之間的結合就等于程序,數據結構在一定層面上來說就相當于是算法的基礎,算法要依附于數據結構進行計算,實現解決實際問題。在算法的研發中,往往先要進行數據結構的調整和搭建,以保證算法對其有充分的適應性。算法的應用對象是數據結構,數據結構在算法中是其進行整合的一部分,數據結構在進行設計時要進行存儲方式的選擇,例如一個問題的信息確定存儲途徑是數組存儲或者是較為普通的變量存儲,需要進行選擇后才能進行算法的進一步設計。數據結構可以說是算法的基石,沒有較為合理的數據結構,就無法使算法很好地應用,數據結構的不同會導致算法之間也有非常大的差異性,算法的設計可以說是不能脫離數據結構存在的。數據結構在進行設計時要充分為算法的設計進行考慮,不能只對數據結構一方面進行設計而忽略了算法的重要性,否則數據結構就會失去它的存在價值。在進行算法設計時,工程師一般都會對較為典型的數據結構有一定的了解,在這個基礎上設計師才能將二者之間緊密的聯系在一起,使算法得到更好的應用。
2、數據結構與算法之間的差別。數據結構側重點在數據的邏輯結構以及存儲結構的關系是否合理上,算法的側重點則是在數據結構的基礎上進行實際問題的解決。算法較為偏重的是整體的結果和結構的統一性,而數據結構則是這些結構的主要構成部分,是完成計算的基礎。
四、程序與算法之間的關系
算法是解決問題的實際步驟,要求其滿足有效、有窮、確定、0個或者多個輸入、1個或多個輸入的特性。程序需要有專業的計算機編程人員來進行編寫,需要較高的水平和技術,程序和算法之間的不同點在于程序不受約束,算法則受到有窮性約束。算法的定義的使用上對其有窮性有一定的影響,使得二者之間存在差異。
五、數據結構與算法間的關系案例
假如:現有若干學生數據,每個學生數據包括學號、姓名、班級及若干門成績(每名學生選擇的科目數可能不同,假設最多六門),要求設計一個程序輸出每個學生的學號、姓名、平均分和每門課的平均分。下面我們有兩種存儲方案:
第一種方案是把學生的所有數據都存放在一個大的表格中,每個學生相對應的全部數據為一個記錄。根據題意,每名學生假設所選的課程數不超過六門,那么所產生的成績數也不多于六門。下面進行數據結構的編寫。
Struct…stud
{
………Int…no;
………Char…name[10];
………Int…classno;
………Int…deg1;
………Int…deg2;
………Int…deg3;
…Int…deg4;
…Int…deg5;
………Int…deg6;
};
第二個方案就是把學生的所有數據都放入到一個表格中,每一名學生的一門課程對應一條記錄,這樣的編寫出的成績項只需要一個,我們為了將每一門課程區分開來,對每一門課程都增加了一個編號。數據結構如下。
Struct…stud
{
………Int…no;
………Char…name[10];
………Int…classno;
………Int…causeno;
………Int…deg;
};
進行分析比較發現,第一種方案相對來說可行性較大。
結束語:時代的發展催生出來的新型軟件的開發離不開程序,在通過計算機進行實際問題的解決過程中,一定會對實際問題的各種信息和處理方式進行發硬,信息的表示中包含兩個部分,信息的邏輯表示和信息的存儲表示,這兩個部分占非常重要的部分。數據結構與算法、程序之間的關系是相互依存、相互作用的,數據結構作為其基礎,必須要做好相應的檢查和調整,使算法和程序能夠得到較好的應用。我們在進行數據結構的編寫時應該注意數據選擇上的合理性,通過不同的編寫方法所達到的效果差異也是非常大的。在進行學習時,掌握數據結構、算法與程序間的關系和內容能夠快速的提升學習水平,達到進一步的提升。
參 考 文 獻
[1]…李文明,葉笑春,張洋,宋風龍,王達,唐士斌,范東睿,謝向輝.…BDSim:面向大數據應用的組件化高可配并行模擬框架[J].…計算機學報.…2015(10)…
[2]…李文杰,姜淑娟,錢俊彥,王興亞,鞠小林.基于對象引用關系的Java程序內存行為分析方法[J].…電子學報.…2015(07)…
[3]…劉曉靜,王曉英,張玉安,黃建強,劉志強.以創新人才培養為目標的數據結構實驗教學改革[J].…實驗技術與管理.…2014(11)endprint