數據結構和算法一直是編程中不可缺乏的話題,可是以前對數據結構和算法也沒有仔細思考過,只知道數據結構和算法,程序中會用到,可以提升程序性能。前幾天看書,發現了幾個概念,加深了我對數據結構和算法的認識,記錄一下。算法
首先,讓咱們瞭解一下什麼是計算機科學,可能由於名字的緣由,你們認爲計算科學是研究計算機的,其實並非這樣的。那是作什麼的?計算機科學是定義問題,如何解決問題以及得出問題解決方案研究。好比給出一個問題,給出這個問題的解決方案即算法,就是計算機科學的目的。值得注意的是,有的問題沒有解決方案,計算機科學須要將這些問題分類出來。編程
當計算機科學研究出了問題的解決方案,咱們就能夠經過編程將方案表達出來。那什麼是編程?就是將一個過程或者算法用程序語言表達出來,這樣計算機就能夠執行。編程語言必須提供一些基本的東來完成算法的編寫,流程控制語句,數據類型等數據結構
當咱們經過編程來表達算法的時候,有一些基本的東西,好比控制流程和一些數據,而咱們要將一個數據表示出來,就須要數據類型,好比整數、字符串框架
咱們已經有了數據類型和控制流程了,能夠將一個算法經過編程完整的表示出來,可是有時候算法太複雜了,咱們使用基本數據類型的時候,須要在細節上花費不少精力來編寫如何存儲和使用數據,這候咱們能夠建立一種更加高層次的數據存儲和使用方式即數據結構,這樣咱們編程實現算法時,就能夠關注更大的目標,沒必要關注數據存儲的細節了。咱們常常用到的數據結構好比隊列,堆,樹數據結構和算法
上面屢次提到了算法,那算法到底是什麼?對於一個問題,咱們得出答案的過程能夠說是算法。編程語言
1. 算法和數據結構的第一目的就是提升程序性能性能
2. 不少框架和底層應用中都用到了算法和數據結構,學好算法和數據結構,咱們能夠更好地理解底層原理學習