數(shù)據(jù)結(jié)構(gòu)和算法哪個(gè)最好 算法和程序的區(qū)別是怎樣的?
算法和程序的區(qū)別是怎樣的?算法和程序也是計(jì)算機(jī)系統(tǒng)中的兩個(gè)概念。要說(shuō)很清楚二者的關(guān)系,要先再理解幫一下忙計(jì)算機(jī)的運(yùn)算原理(圖靈機(jī)原理)。計(jì)算機(jī)運(yùn)算有以下三個(gè)特征:計(jì)算出步驟為最多次有輸入項(xiàng)和控制輸出項(xiàng)
算法和程序的區(qū)別是怎樣的?
算法和程序也是計(jì)算機(jī)系統(tǒng)中的兩個(gè)概念。要說(shuō)很清楚二者的關(guān)系,要先再理解幫一下忙計(jì)算機(jī)的運(yùn)算原理(圖靈機(jī)原理)。
計(jì)算機(jī)運(yùn)算有以下三個(gè)特征:
計(jì)算出步驟為最多次有輸入項(xiàng)和控制輸出項(xiàng)
每個(gè)步驟都只做四則運(yùn)算、邏輯運(yùn)算、關(guān)系運(yùn)算和數(shù)據(jù)操作人們巳經(jīng)相關(guān)證明計(jì)算機(jī)運(yùn)算也可以幫忙解決所有不要無(wú)限次計(jì)算的問(wèn)題。用計(jì)算機(jī)乘法運(yùn)算可以解決某一問(wèn)題的方法應(yīng)該是算法了。例如,要如何對(duì)一個(gè)數(shù)列進(jìn)行排序,如何能遍歷數(shù)組一個(gè)樹(shù)形的所有分支,如何找不到一個(gè)40多塊方程組的最優(yōu)解。
目的是讓計(jì)算機(jī)執(zhí)行設(shè)計(jì)好的算法,要據(jù)算法如何制定計(jì)算機(jī)指令序列,這個(gè)指令序列那就是程序。計(jì)算機(jī)指令是和前面說(shuō)的運(yùn)算和操作是唯一編號(hào)的。它是一組數(shù)字編碼,像是人很容易能夠讀懂。于是,人們又制定了距離自然語(yǔ)言的編程語(yǔ)言,方便啊人們編寫(xiě)程序。
程序和數(shù)據(jù)結(jié)構(gòu)有什么關(guān)系?
它們也可以相互區(qū)別也可以不相互統(tǒng)一。廣義上講,算法是某一系列運(yùn)算步驟,它怎樣表達(dá)解決的辦法某一類計(jì)算問(wèn)題的好象方法,對(duì)這類方法的任何一個(gè)輸入,它是可以按步驟一步一步地可以計(jì)算,到了最后有一種一個(gè)輸出。
可是對(duì)于所有的計(jì)算問(wèn)題,都都離不開(kāi)要計(jì)算出的對(duì)象或則要全面處理的信息,而要如何高效安全的把它們參與下來(lái),應(yīng)該是數(shù)據(jù)結(jié)構(gòu)不在乎的問(wèn)題,所以算法是離不開(kāi)數(shù)據(jù)結(jié)構(gòu)的。
單講數(shù)據(jù)結(jié)構(gòu),它指數(shù)據(jù)的組織結(jié)構(gòu),它有邏輯結(jié)構(gòu)和物理結(jié)構(gòu),同時(shí)還除開(kāi)一些定義在某種數(shù)據(jù)結(jié)構(gòu)上的算法,它只限于某一某個(gè)特定數(shù)據(jù)結(jié)構(gòu)中在用,可以以為它是數(shù)據(jù)結(jié)構(gòu)的組成部分,諸如棧的壓棧操作,這些算法雖小但很不重要,可以正數(shù)集合是它們做出決定了數(shù)據(jù)結(jié)構(gòu)的外部特性,例如則是是堆,有二叉堆,二項(xiàng)式堆,它們除此之外內(nèi)部結(jié)構(gòu)的差別,最大的肯定外部操作的算法性能完全不同,也決定了它們本質(zhì)上的不同,如果不是外部性能一般,那去研究將是沒(méi)有任何意義的。其實(shí),不能逃出算法再討論數(shù)據(jù)結(jié)構(gòu),也又不能脫離數(shù)據(jù)結(jié)構(gòu)研究算法。