資料結構筆記 大戰演算法

2021-10-24 19:32:02 字數 1537 閱讀 7056

讀書給我更多的憩息,引導我散步在別人的知識與靈魂中。

繼續學習資料結構啦!

至於為什麼在資料結構裡還會談到演算法,畢竟資料結構和演算法本就在寫**時是分不開的,所以在學資料結構時也就會談到億點點演算法啦,哈哈哈。

關於資料結構和演算法的關係在文章開頭已提到了哈,下面我們介紹介紹高斯。

關於高斯

大家都知道高斯是很聰明的乙個人,也是著名的數學家,而我們演算法其本質也就是數學,所以這其中的種種大家也就都懂啦。

比如我們計算從1加到100,大家最先想到簡單的方法可能就是直接加。

然後根據我們的經驗就知道這其實是有簡便方法的,比如有一種便是對稱相加。

當然,高斯想到了另一種,將100加上1,99加上2…一直到1加上100,最後再除以二,在計算機執行也就是乙個公式的步驟,其演算法類似於我們學過的等差數列,這樣當數學和計算機相遇時便構成了演算法。

什麼是演算法:演算法是解決特定問題步驟求解的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。

首先演算法的特性有五個的基本特性,分別是:輸入,輸出,有窮性,確定性和可行性。

1.輸入輸出:演算法具有零個(如列印hello,word)或多個輸出,至少有乙個或多個輸出,演算法是一定需要輸出的。就和人們表達一樣嘛,你有再好的想法,不表達出來又有什麼用呢。

2.有窮性:指演算法在執行有限的步驟之後,自動結束而不會出現無線迴圈,並且每乙個步驟都在可接受的時間內完成。(防止死迴圈)

3.確定性:演算法的每一步驟都具有確定的含義,不會出現二義性。只執行一條路徑,相同的輸入只能有唯一的輸出結果,也就是說演算法的每個步驟都必須是無歧義的。

4.可行性:演算法的每一步都必須是可行的,每一步都能通過執行有限的次數完成。

1.正確性:演算法的正確性是指演算法至少應該具有輸入,輸出和加工處理無歧義性,能正確反映問題的需求,能夠得到問題的正確答案。

那麼何為」正確「呢,在程式設計時一般分為以下幾點:

演算法程式沒有語法錯誤(基本);

演算法程式對於合法的輸入資料能夠產生滿足要求的輸出結果;

演算法程式對於非法的輸入資料能夠得出滿足規格說明的結果(判斷演算法是否正確);

演算法程式對於精心選擇的,甚至刁難的測試資料都有滿足要求的輸出結果(最難)。

2.可讀性:演算法設計的另一目的是為了便於閱讀,理解和交流。可讀性的提高非常有助於人們理解演算法,有些可讀性很低的演算法往往可能會隱含著錯誤,且不易被發現。比如當你的同事準備接你寫的**時,發現你的**很難讓人去理解,那麼這不就將公司的效率拉得極低麼。

3.健壯性:當輸入不合法時,演算法也能做出相應處理,而不是產生異常或莫名其妙的結果 。

4.時間效率高且儲存量低:時間效率指的是演算法的執行時間,也就是說,在解決同乙個問題時,演算法執行的時間越短,那麼它的效率也就越高。儲存量指的是在演算法執行時所需要的最大儲存空間,主要指演算法程式執行時所占用的記憶體或外部硬碟儲存空間。就比如大家在生活中都希望花最少的錢,用最短的時間從而辦最大的事,演算法亦是。

資料結構與演算法 筆記 資料結構與演算法筆記 棧

以前學習的時候都沒怎麼好好的做過筆記,總是東記一點,西寫一點,甚至都不做筆記,導致後面找的時候找不到,最後還是求助搜尋引擎浪費掉很多時間。好腦筋不如個爛筆頭呀。這次又重新學習python的資料結構及演算法 中國mooc上的公開課 就好好做個筆記吧。棧是一種只能在一端進行插入和刪除的線性資料結構。一般...

資料結構筆記 KMP演算法

kmp演算法 每當一趟匹配過程中出現字元比較不等時,不需要回溯i指標,而是利用已經得到的部分匹配的結果將模式向右滑動盡可能遠的一段距離後,繼續比較 設主串為 s1s2s3.sn,模式串為p1p2p3.pm 需要解決的問題 當主串中第i和字元與模式串中第j個字元失配時,需要和模式串中哪個字元再比較?假...

資料結構與演算法筆記

main.c檔案 主函式檔案 include seqlist.h 包含的標頭檔案 include main.h void menu intmain break case2 printf 輸入要插入的元素 while scanf s d item item 1 break case3 printf d...