官术网_书友最值得收藏!

1.2 算法相關(guān)概念的區(qū)別

算法其實(shí)是一個(gè)很抽象的概念,往往需要依托于具體的實(shí)現(xiàn)方法才能體現(xiàn)其價(jià)值,如在計(jì)算機(jī)編程中的算法、數(shù)值計(jì)算中的算法等。本書(shū)重點(diǎn)講解的便是算法在計(jì)算機(jī)編程中的應(yīng)用。算法具有抽象性,容易混淆,這里有必要說(shuō)明一些基本的概念。

1.2.1 算法與公式的關(guān)系

根據(jù)前面所談到的算法,讀者很容易聯(lián)想到數(shù)學(xué)中的公式。公式用于解決某類(lèi)問(wèn)題,有特定的輸入和結(jié)果輸出,能在有限時(shí)間內(nèi)完成,并且公式都是完全可以操作計(jì)算的。公式確實(shí)提供了一種算法,但算法絕不完全等于公式。

公式是一種高度精簡(jiǎn)的計(jì)算方法,可以認(rèn)為就是一種算法,它是人類(lèi)智慧的結(jié)晶。而算法并不一定是公式,算法的形式可以比公式更復(fù)雜,解決的問(wèn)題更加廣泛。

1.2.2 算法與程序的關(guān)系

正如前面所述,算法依托于具體的實(shí)現(xiàn)方式。雖然一提到算法,就使人聯(lián)想到計(jì)算機(jī)程序設(shè)計(jì),但算法并非僅用于此。例如,在傳統(tǒng)的筆算中,通過(guò)紙和筆按照一定的步驟完成的計(jì)算也是算法的應(yīng)用;在速記中,人們通過(guò)特殊的方法來(lái)達(dá)到快速牢固記憶的目的,這也是一種算法的應(yīng)用。

在計(jì)算機(jī)程序設(shè)計(jì)中,算法的體現(xiàn)更廣泛,幾乎每個(gè)程序都需要用到算法,只不過(guò)有些算法比較簡(jiǎn)單,有些算法比較復(fù)雜而已。

算法和程序設(shè)計(jì)語(yǔ)言是不同的。目前比較流行的程序設(shè)計(jì)語(yǔ)言,包括Visual Basic、C、C++、C#、Java、Pascal、Delphi、PB等。程序設(shè)計(jì)語(yǔ)言是算法實(shí)現(xiàn)的一種形式,也是一種工具。讀者往往需要首先熟悉程序設(shè)計(jì)語(yǔ)言的語(yǔ)法格式,然后才能使用這種程序語(yǔ)言編寫(xiě)合適的算法實(shí)現(xiàn)程序。學(xué)習(xí)一門(mén)程序設(shè)計(jì)語(yǔ)言是比較容易的,難的是如何正確合理地運(yùn)用算法來(lái)編寫(xiě)求解問(wèn)題。

1.2.3 算法與數(shù)據(jù)結(jié)構(gòu)的關(guān)系

數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的組織形式,可以用來(lái)表征特定的對(duì)象數(shù)據(jù)。在計(jì)算機(jī)程序設(shè)計(jì)中,操作的對(duì)象是各式各樣的數(shù)據(jù),這些數(shù)據(jù)往往擁有不同的數(shù)據(jù)結(jié)構(gòu),如數(shù)組、結(jié)構(gòu)體、聯(lián)合、指針和鏈表等。因?yàn)椴煌臄?shù)據(jù)結(jié)構(gòu)所采用的處理方法不同,計(jì)算的復(fù)雜程度也不同,因此算法往往依賴(lài)于某種數(shù)據(jù)結(jié)構(gòu)。也就是說(shuō),數(shù)據(jù)結(jié)構(gòu)是算法實(shí)現(xiàn)的基礎(chǔ)。

計(jì)算機(jī)科學(xué)家尼克勞斯·沃思(Nikiklaus Wirth)曾提出了一個(gè)著名的公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序。后來(lái),他為此著有《數(shù)據(jù)結(jié)構(gòu)+算法=程序》一書(shū)。從中可以看到算法和數(shù)據(jù)結(jié)構(gòu)的關(guān)系。

學(xué)習(xí)了前面的介紹,讀者應(yīng)對(duì)程序、算法、數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計(jì)語(yǔ)言有一個(gè)比較深刻的認(rèn)識(shí)。如果給出一個(gè)公式,則可以表述成如下形式:

數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)語(yǔ)言=程序

這里,數(shù)據(jù)結(jié)構(gòu)往往表示的是處理的對(duì)象,算法是計(jì)算和處理的核心方法,程序設(shè)計(jì)語(yǔ)言是算法的實(shí)現(xiàn)方法。這幾者的綜合便構(gòu)成一個(gè)實(shí)實(shí)在在的程序。

注意:算法是解決問(wèn)題的一個(gè)抽象方法和步驟,同一個(gè)算法在不同的語(yǔ)言中具有不同的實(shí)現(xiàn)形式,這依賴(lài)于數(shù)據(jù)結(jié)構(gòu)的形式和程序設(shè)計(jì)語(yǔ)言的語(yǔ)法格式。

主站蜘蛛池模板: 嘉义县| 临桂县| 宣武区| 剑川县| 梅河口市| 平江县| 甘德县| 麦盖提县| 丽水市| 盐城市| 吉安县| 慈溪市| 沈阳市| 嘉荫县| 杨浦区| 新野县| 改则县| 自贡市| 新野县| 静安区| 迁西县| 永平县| 丹东市| 黔西县| 云安县| 成武县| 大丰市| 增城市| 洞头县| 高唐县| 吴旗县| 右玉县| 蒲江县| 榕江县| 秦安县| 仙游县| 朝阳区| 滕州市| 逊克县| 伽师县| 临江市|