Tatoeba sentences — language code: yue
到咗廿一世紀，人仲有好多方法可以造鐘。重點係要運用一啲週期恆定嘅物理過程。
呢個電路就係電子工程上講嘅半加法器，憑住唔同種類嘅邏輯門，電子工程師仲能夠砌出做加法、做減法同埋多種其他運算嘅電路－一部電腦就係用咗大量嘅呢啲電路組成嘅超級運算機械，呢種機械喺廿一世紀嘅社會不可或缺。
設計機械嘅過程同一般嘅工程設計過程大致上相同。喺設計機械嘅過程入面，一個工程師嘅目標係要設計出一部能夠最有效噉達到目標嘅機械－當中目標可以係幫工廠盡可能有效率噉生產件產品、幫手令架車嘅最大速度提升、或者幫手將一啲物體由一個地點移動到去第個地點。
演算法係數學同電腦科學上嘅一個概念，指一串能夠冇歧義或者含糊噉教一個人或者一部電腦點樣解決某啲特定問題嘅命令。演算法有分好多唔同種，唔同種嘅演算法可以用嚟解決唔同嘅問題，由簡單嘅算術以至自動化嘅認知等等都有演算法可以做得到。
演算法可以喺有限嘅時間同記憶空間之內，透過形式語言（簡單講就係個個字都有精確定義嘅語言，相對於日常講嘢用嘅自然語言）嚟表達，用嚟計某一啲函數：噉講嘅意思係話，一串演算法會要求某啲特定嘅輸入，跟住啲命令會描述一柞運算；當呢柞運算由人或者電腦執行嗰陣，會經過一連串數量有限嘅中介狀態，最後產生一個輸出，並且喺呢個最終狀態嗰度終止執行。
順帶一提，由一個中介狀態去到下一個嘅過程唔一定係決定性嘅，有好多演算法都涉及一啲帶有隨機性喺入面嘅運算。
演算法嘅概念歷史悠久，有得一路追溯到去公元前嘅古希臘：由古希臘數學家諗出嚟嘅愛氏篩同埋係歐幾里得演算法等都可以算係早期演算法嘅例子。
而演算法嘅英文名係由 9 世紀嘅波斯人數學家花剌子密個姓嗰度嚟嘅－佢個姓用羅馬字寫係 algoritmi，花剌子密佢做咗啲相關研究，局部噉確立咗演算法嘅概念。
現代嘅演算法概念係喺 1928 年由德國數學家打域囂拔喺佢嘗試解決可判定性嘅問題嗰陣奠定嘅。自從嗰陣開始，演算法同相關嘅研究就喺數學同電腦科學呢兩個領域嗰度俾人廣泛噉採用。
籠統噉講，「演算法」呢個詞嘅定義可以指「一串能夠精確噉定義一系列作業嘅規則」。
呢個定義包含嗮所有嘅電腦程式－就連啲唔曉做數字上嘅運算嘅程式都包含喺呢個定義之內，而歐幾里得演算法同埋文頭嗰個流程圖所描述嘅都係符合呢個定義嘅演算法。
演算法對於電腦處理數據嚟講係不可或缺嘅：電腦程式會包含一大柞嘅演算法，仔細噉教部電腦要做啲乜嘢運算同埋「以乜嘢次序做呢啲運算」，令部電腦曉解決用家想用嗰個程式解決嘅問題－呢啲問題可以包括咗計啲簡單嘅算術以至複雜嘅統計學作業等等都得。
精確啲噉講，一段演算法包含一串作業，而串嘢要有以下呢啲特質：有某啲特定嘅次序；唔具有歧義嘅問題； 有得攞部理想嘅運算機械－即係有圖靈完整性嘅機械－嚟行；曉自己結束運行－即係話可以係有限嘅時間之內行完，並且俾一個輸出出嚟睇，唔會有無限迴圈嘅問題。
由於受到速度、時間同字體大細嘅限制，冇人能夠將一個雖然可以數但係無限大嘅集入面所包含嘅物件用任何嘅某種寫法寫嗮出嚟。
但係，對住某啲嘅呢種可數但係無限大嘅集，人能夠做一啲同等有用嘅嘢（指演算法）：佢哋可以俾一啲明確嘅指示出嚟，去搵出個集所包含嘅第 n 件物件，而 n 係指是但一個細過無限大嘅整數。
呢啲指示都要充分明確至得，而且形式上要可以令到一個曉計數嘅機器（電腦）⸺或者一個人，不過呢個人只要曉得好簡單咁處理符號就得⸺能夠跟從呢啲指示。
上面呢段嘢當中所講嘅「可數嘅無限集」係數學上嘅一個概念，指一個包含咗多樣嘢嘅集，而呢個集包含嘅物件有無限咁多件，但啲件數可以用由 1 開始嘅整數嚟數。
所以貝勞斯同佢啲同事講緊就係話：一串演算法係一連串指令，例如係一柞好似「y=m+n；y代表輸出， m同n代表輸入」噉嘅算式；而呢柞指令能夠由是但一啲輸入嗰度計同整一啲輸出出嚟俾人睇，而且呢啲輸入－至少喺理論上－係幾大都得嘅（但實際上因為人有嘅電腦嘅運算能力有限，所以對於輸入嘅大細梗會有個上限）。
一幅表達咗串演算法嘅流程圖：首先睇個原初值，睇吓嗰個值係咪俾人改過，如果係，就做一樣嘢，如果唔係，就做另外一樣嘢。
想像家陣有一部曉跟事先指定咗嘅規則嚟由輸入計輸出嘅機械，呢部機械嘅記憶體係無限咁多嘅－即係一部理想化嘅圖靈機。
呢部機械計緊嘅運算嘅內容可以用多種唔同嘅圖表同語言表達，包括係自然語言、虛擬碼、流程圖、狀態轉移表同埋係多種嘅程式語言。
用自然語言－即係好似粵語等日常傾偈用開嘅語言－寫嘅符號（虛擬碼）對一般人嚟講易明，但就好多時都會有歧義嘅問題，而且電腦唔會識睇。
程式語言係專門為咗俾人用嚟同電腦溝通而設嘅特殊語言，電腦會睇得明，所以演算法好多時都會用程式語言嚟定義。
要解決嘅問題：家吓俾一列正數（輸入）你，假設呢個列唔係一個空列，同我搵嗰列數入面最大嗰個出嚟。用粵文寫嘅演算法嘅步驟：設一個變數，叫佢做「max」，並且將佢個數值設做「0」；將收到嗰列正數逐個逐個攞嚟同 max 比較吓；如果撞到一個大過 max 嘅數（叫呢個數做「x」）嘅話，將 max 嘅數值設做 x，並且繼續將 max 同下個正數比較吓；（邏輯代數）將最後得出嗰個 max 嘅數值俾出嚟（輸出）。max 嘅數值會係成列數入面最大嗰個。
諗演算法嘅過程係將一個作業揼散做組成佢嘅細部份，而每個細部份都要係一啲電腦普遍都會識做嘅簡單工作（例如係「比較兩個數，睇吓邊個大啲」）－呢啲細部份可以話係組成演算法嘅元素，有咗佢哋就能夠將任何「人類會想用電腦做嘅工作」砌出嚟。
高層描述會描述一串演算法要做乜嘢運算，但就忽略點樣將串演算法實行落去部運算機械嗰度。
一般人會睇得明，但運算機械唔會。可以睇埋高階程式語言同虛擬碼。
實行性描述會話俾一部圖靈機知要點樣郁同要點樣將啲數據儲喺啲數據庫嗰度。喺呢個層次仲未會話到運算過程嗰啲中介狀態同埋函數嘅詳情俾人知。
形式描述係最仔細，會講明埋運算過程嗰啲中介狀態同函數。
上面嗰段 Python 碼屬於高層嘅描述－就算睇咗佢，一個人仲係唔會知道部電腦嗰啲邏輯門做咗乜嘢運算。
一部廿一世紀初嘅電子電腦喺計加數嗰陣係用類似以下噉嘅機制做嘅：想像家吓個工程師手上有一柞邏輯門，邏輯門係一種電子元件，唔同種類嘅邏輯門有唔同嘅輸入輸出關係，喺收到某啲特定嘅「0」（冇電）同「1」（有電）訊號嗰陣會俾出「0」（冇電）或者「1」（有電）訊號做輸出。
一個簡單嘅異或門會收兩個輸入，如果兩個輸入值一樣，個門會俾「0」，如果兩個輸入值唔同，個門會俾「1」。
一個簡單嘅與門會收兩個輸入，淨係得當兩個輸入都係「1」嗰陣，個門先至會俾「1」
用日常講，當 A 同 B 呢兩個輸入都係「0」嗰陣，輸出會係「00」（兩個輸出都冇電）。
當 A 同 B 是但一個係「1」另一個係「0」嗰陣，輸出會係「01」（得 S 有電）。
最後，如果兩個輸入都係「1」，噉個輸出會係「10」（得 C 有電）。如果用二進制睇嘅話，上述呢個電路做得到 1+1=2嘅簡單運算：當兩個輸入都係「0」，0+0=0，當得其中一個輸入係「1」，1+0=1，而當兩個輸入都係「1」嗰陣時，1+1=10，當中「10」喺二進制入面相當於十進制嘅「2」。
將手上嘅數據逐個逐個耖，一路耖到搵到想要嗰個為止。
搜尋演算法泛指用嚟由數據結構當中搵出想要嗰件數據嘅演算法－輸入係「數據結構」同「想要嗰件數據嘅樣」，而輸出係「想要嗰件數據喺數據結構當中嘅邊個位」。
廿一世紀嘅電腦科學界有多種搜尋演算法可以用，而每種都有優缺點。