- Java常用算法手冊(cè)(第3版)
- 宋娟
- 1098字
- 2020-06-23 15:32:48
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ǔ)法格式。
- MATLAB與C/C++混合編程
- iOS App界面設(shè)計(jì)創(chuàng)意與實(shí)踐
- 軟件研發(fā)效能提升之美
- 軟件測(cè)試面試突擊:為自己贏得一份測(cè)試工程師職位
- 移動(dòng)Web實(shí)現(xiàn)指南:面向移動(dòng)設(shè)備的網(wǎng)站優(yōu)化、開(kāi)發(fā)和設(shè)計(jì)
- Spring Cloud微服務(wù)架構(gòu)實(shí)戰(zhàn)
- 實(shí)用軟件工程
- Python跨平臺(tái)應(yīng)用軟件開(kāi)發(fā)實(shí)戰(zhàn)
- Verilog HDL數(shù)字系統(tǒng)設(shè)計(jì)及實(shí)踐
- HTML5游戲編程核心技術(shù)與實(shí)戰(zhàn)
- 統(tǒng)信UOS應(yīng)用開(kāi)發(fā)詳解
- 芯片改變世界
- 構(gòu)建移動(dòng)網(wǎng)站與APP:ionic移動(dòng)開(kāi)發(fā)入門(mén)與實(shí)戰(zhàn) (跨平臺(tái)移動(dòng)開(kāi)發(fā)叢書(shū))
- MATLAB函數(shù)速查手冊(cè)(修訂版)
- 云計(jì)算工程