認識數(shù)據(jù)結(jié)構(gòu)和算法

程序 = 數(shù)據(jù)結(jié)構(gòu) + 算法

數(shù)據(jù)結(jié)構(gòu)
  1. 數(shù)據(jù)結(jié)構(gòu)是一門研究組織數(shù)據(jù)方式的學科, 學好數(shù)據(jù)結(jié)構(gòu)可以編寫出更漂亮、更有效率的代碼
  2. 數(shù)據(jù)結(jié)構(gòu)是算法的基礎(chǔ), 要想學好算法, 先學好數(shù)據(jù)結(jié)構(gòu)
  3. 數(shù)據(jù)結(jié)構(gòu)包括線性結(jié)構(gòu)非線性結(jié)構(gòu)
  • 線性數(shù)據(jù)結(jié)構(gòu)
    1.數(shù)據(jù)元素之間存在一對一的線性關(guān)系
    2.線性結(jié)構(gòu)有兩種不同的存儲結(jié)構(gòu), 順序存儲結(jié)構(gòu)(數(shù)組、隊列和棧)和鏈式存儲結(jié)構(gòu)(鏈表)
  • 非線性數(shù)據(jù)結(jié)構(gòu)
    比如多維數(shù)組、廣義表、樹結(jié)構(gòu)和圖結(jié)構(gòu)
算法
  1. 算法是程序的靈魂, 優(yōu)秀的程序可以在海量數(shù)據(jù)計算時, 依然保持高速計算
  2. 現(xiàn)在面試門檻越來越高, 高級程序員必面
看幾個經(jīng)典的算法面試題
  • 字符串匹配問題
    有一個字符串s1 = "看幾個經(jīng)典的算法面試題"和一個子串s2 = "算法",現(xiàn)在判斷s1是否包含s2, 包含就返回第一次出現(xiàn)的位置, 不包含就返回-1, 請使用最快的速度完成查找。
    大部分人首先想到的是暴力匹配,逐個去對比,這種方式雖然簡單,但是效率極低。
    哪有沒有什么好的算法呢? (提示: KMP算法)
  • 漢諾塔游戲
    將A塔的所有圓盤移動到C盤,要求小盤不能放到大盤上,一次只能移動一個盤子。


    漢諾塔游戲
  • 八皇后問題
    八皇后問題是一個古老而著名的問題,是回溯算法的經(jīng)典案例。這個問題是由國際西洋棋棋手馬克斯*貝瑟兒于1848年提出,在8乘8的國際象棋盤上擺放八個皇后,使其不能相互攻擊(就是任意兩個皇后不能在同一行、同一列或同一斜線上),問有多少種擺法? (提示: 分治算法)


    8皇后游戲
  • 馬踏棋盤
    將馬放在國際象棋8*8棋盤中的某個方格內(nèi),馬走日進行移動,要求每個方格只能進一次,走遍棋盤64個方格。(提示: 會使用到圖的深度優(yōu)先遍歷算法DFS + 貪心算法)


    馬踏棋盤

上面的問題你都會了嗎? 沒的話就繼續(xù)往下學習吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容