文章目錄
- 1. 什么是數據結構
- 定義
- 舉例
- CRUD難道不是都一樣嗎?
- 總結
- 2. 什么是算法
- 3. 數據結構與算法的聯系
- 舉例
- 4. 推薦
1. 什么是數據結構
定義
數據結構(data structure)是計算機中存儲、組織數據的方式。
關鍵詞:① 數據 ② 存儲 ③ 組織
舉例
以手機通訊錄存儲聯系人為例:
① 數據:人名、手機號
② 存儲數據的方式:列表(list)
③ 組織:CRUD(增刪改查,計算機中的縮寫)
?????增 – 增加一個聯系人信息
?????刪 – 刪除一個聯系人信息
?????改 – 修改聯系人信息(如:改備注)
?????查 – 查詢某個聯系人的信息(如:查手機號)
?????這里的增刪改查都是相對于組織而言的
結論:數據結構這門學科,無非就是跟數據有關。關于數據我們要研究兩個東西,一個是數據的存儲方式,另一個是數據如何CRUD。
CRUD難道不是都一樣嗎?
結論:不一樣
解釋:以快遞格子(二維靜態數組)為例,它的特別之處在于 有行、列之分。這個世界上有很多不同的結構(不同的存儲方式),例如:列表、二維數組、樹、圖、線性表(這個詞在國際上不存在,在國際面試時 就說array-數組,沒有別的詞)。 對于這個格子,我們可以查和改,但是沒法增和刪(因為這個箱子是固定的,總不能把箱子給砸了)。
數組有一維、二維以及動態、靜態之分。上述內容其實也可以用一維靜態數組存儲。
總結
① 數據結構其實跟日常生活非常密切
② 數據結構三大點:1.必須要有數據的操作;2.數據是怎么存儲的;3.數據是怎么組織的
③ 這個數據是如何存儲的,就決定了這個數據如何組織(CRUD)。
2. 什么是算法
????????算法就是解決問題采用的步驟和方法
????????算法的目的:算法就是為了研究組織數據結構的最優CRUD解(例如:這個數據我們怎么更快地查出來、這個數據我們怎么更快地去添加、這個數據我們怎么更快地修改、這個數據我們怎么更快地刪除)。簡單來說就是為了解決 “如何更好地組織數據” 這個問題。
3. 數據結構與算法的聯系
????????數據結構和算法是有關系的,但不是從屬關系,不是并列關系,也不是相互影響的關系。組織是數據結構中一個核心的部分,但是我們如何更科學、更高效、更優等地組織,這就需要用到算法,算法是處于 “如何組織” 這一部分的。
????????數據結構與算法之間存在一個清晰的邏輯:1. 必須先搞清楚數據是什么(例如:我們用的QQ號、QQ密碼、支付密碼、個人信息等都存到服務器上的東西都可以稱為數據);2. 然后考慮如何解決這些數據(很重要)。數據結構的目的就是為了研究怎么存儲這些數據、怎么組織這些數據,然后告訴你有哪些組織方式,在什么情況下用什么組織方式更好(例如用格子管理快遞、用列表管理聯系人) 3. 如果條件允許的話,可以進一步考慮一下如何更好地組織這些數據(這就用到了算法)。
舉例
一 、情景:
記者: 請問1-20里,您喜歡哪些數字呢
路人甲:11、3、5、7、8
記者:請問1-20里,您喜歡哪些數字呢
路人乙:12、8、9。剛剛那個人和我一樣喜歡8這個數字么?
記者:稍等一下,我查一下,我剛剛記錄了。是的,她也喜歡。
二、 分析:
數據結構:
????????數據:路人甲和路人乙回復的數字
????????存儲:此處采用兩個一維數組a[30]、b[30]
????????組織:在數組a[30]中查詢數字4的過程。可以采用for循環遍歷數組,看看數組里是否有數字4。
算法:怎么更快的查詢。可以采用二分查找
4. 推薦
筆記來源:直面數據結構課程