- 算法零基礎(chǔ)一本通(Python版)
- 洪錦魁
- 758字
- 2022-07-29 15:07:44
1-1 計(jì)算機(jī)的算法
在科技時(shí)代,我們常使用計(jì)算機(jī)解決某些問(wèn)題。為了讓計(jì)算機(jī)可以了解人類(lèi)的思維,我們將解決問(wèn)題的方法用特定方式告訴計(jì)算機(jī),這個(gè)特定方式就是計(jì)算機(jī)可以理解的程序語(yǔ)言。計(jì)算機(jī)會(huì)依據(jù)程序語(yǔ)言的指令,一步一步完成工作。
當(dāng)使用程序語(yǔ)言解決工作上的問(wèn)題時(shí),我們需要知道應(yīng)該使用什么方法,可以更快速、有效地完成工作。
例如,有一系列數(shù)字,我們想要找到特定數(shù)字,是否有更好的方法?

假設(shè)我們要找的數(shù)字是3,如果我們從左到右找尋,需要找尋5次;如果我們從中間找尋,只要1次就可以找到。其實(shí)找尋的方法,就是算法。
例如,有一系列數(shù)字,我們想將這一系列數(shù)字從小到大排序。

為了完成上述從小到大將數(shù)字排列,也有許多方法,這些方法也可以稱(chēng)為算法。
目前世界公認(rèn)的第一個(gè)算法是歐幾里得算法,出現(xiàn)在歐幾里得(Euclid,公元前325—前265年)所著的《幾何原本》(古希臘語(yǔ):),這是一本數(shù)學(xué)著作,也是現(xiàn)代數(shù)學(xué)的基礎(chǔ)。著作共有13卷,在第8卷中就有討論歐幾里得算法,這個(gè)算法又稱(chēng)輾轉(zhuǎn)相除法。歐幾里得是古希臘數(shù)學(xué)家,又被稱(chēng)為幾何學(xué)之父。
現(xiàn)代美國(guó)有一位非常著名的計(jì)算機(jī)科學(xué)家唐納德·歐文·克努特(Donald Ervin Knuth,1931—),他是美國(guó)斯坦福大學(xué)榮譽(yù)教授退休,1972年圖靈獎(jiǎng)(Turing Award)得主,在他所著的《計(jì)算機(jī)程序設(shè)計(jì)的藝術(shù)》(The Art of Computer Programming)中,對(duì)算法(algorithm)做了特征歸納:
(1)輸入:一個(gè)算法必須有0個(gè)或更多的輸入。
(2)有限性:一個(gè)算法的步驟必須是有限的。
(3)明確性:算法描述必須是明確的。
(4)有效性:算法的可行性可以獲得正確的執(zhí)行結(jié)果。
(5)輸出:輸出就是計(jì)算結(jié)果,一個(gè)算法必須要有1個(gè)或更多的輸出。
注 唐納德的著作The Art of Computer Programming曾被《科學(xué)美國(guó)人》(Scientific American)雜志評(píng)估為與愛(ài)因斯坦的《相對(duì)論》并論的20世紀(jì)最重要的12本物理科學(xué)專(zhuān)論之一。
所以我們也可以將算法過(guò)程與結(jié)果歸納做下列的定義:
輸入 + 算法 = 輸出
- Java程序設(shè)計(jì)(慕課版)
- LabVIEW Graphical Programming Cookbook
- Learning Apex Programming
- Building a RESTful Web Service with Spring
- 深入實(shí)踐Spring Boot
- Web Development with Django Cookbook
- 你必須知道的204個(gè)Visual C++開(kāi)發(fā)問(wèn)題
- The Professional ScrumMaster’s Handbook
- Clean Code in C#
- .NET Standard 2.0 Cookbook
- Android Studio Cookbook
- OpenCV 3計(jì)算機(jī)視覺(jué):Python語(yǔ)言實(shí)現(xiàn)(原書(shū)第2版)
- 分布式架構(gòu)原理與實(shí)踐
- Three.js權(quán)威指南:在網(wǎng)頁(yè)上創(chuàng)建3D圖形和動(dòng)畫(huà)的方法與實(shí)踐(原書(shū)第4版)
- CryENGINE Game Programming with C++,C#,and Lua