資料結構與演算法(基本認知)

2021-10-24 17:11:15 字數 2394 閱讀 5418

**是對特定問題求解步驟的一種描述,是指令的有限序列**

**評價演算法的優劣:

時間複雜度和空間複雜度其實就是所耗時間與空間關於輸入資料規模的函式

1)時間複雜度

算出結果的時間花費多少

2)空間複雜度

算出結果需要的記憶體位元組的多少

3)可讀性和可維護性**

**是相互之間存在的一種或者多種特定關係的資料元素的集合

資料結構包含三個層面:

1)邏輯結構

2)物理結構

3)運算結構

實際程式設計過程中使用比較多的邏輯資料結構

棧特點:後進先出

順序儲存:stack_base_array.c stack_base_array.h stack_base_array_test.c

gcc stack_base_array.c stack_base_array_test.c

鏈式儲存:stack_base_list.c stack_base_list.h stack_base_list_test.c

gcc stack_base_list.c stack_base_list_test.c

佇列:先進先出

順序儲存:queue_base_array.c queue_base_array.h queue_base_array_test.c

gcc queue_base_array.c queue_base_array_test.c

鏈式儲存:queue_base_list.c queue_base_list_test.c queue_base_list.h

gcc queue_base_list.c queue_base_list_test.c**

**有序二叉樹

筆試題容易考的內容:先序遍歷 中序遍歷 後序遍歷的實現演算法

重點:建立二叉樹 插入節點 三種遍歷方式

刪除節點 銷毀二叉樹**

**排序

氣泡排序(筆試題容易考)

大資料沉底

插入排序:第乙個資料自然有序

前兩個資料排序 使其有序

前三個資料排序 使其有序

。。。前n個資料排序 使其有序

選擇排序:選出小的放到前面

快速排序:排序速度最快的

歸併排序:**

查詢:**線性查詢

二分查詢**

**只關注只解決第乙個錯誤,如果錯誤所在行檢查不出錯誤,往前找  不要往後找**
**1)print列印(用的最多)

2)gdb單步調式程式

vim gdb.c

gcc gdb.c -g //-g, 使生成的可執行程式中包含除錯資訊

gdb a.out

(gdb)l //l, list 列出**

(gdb)l

(gdb)b 10 //b, breakpoint(斷點) 程式執行到斷點位置 自動暫停

// 在i=0;行上設定了斷點

(gdb)r //r, run 執行程式

//程式執行到第10行暫停 注意第10行**尚未執行

(gdb)l 10

(gdb)p a //p, printf 列印

//列印a 變數的取值

(gdb) p str

(gdb)p &a //列印a的位址

(gdb) p name //列印陣列內容

(gdb)l 10

(gdb)n //next, 單步執行 執行一步就停下來

(gdb)n

(gdb)n // 執行了a+i**

(gdb) p i

(gdb) p a

(gdb) n

(gdb) n

(gdb) p name

重複執行for迴圈的過程

(gdb) b 17 // printf("%s\n", name); 加斷點

(gdb) c //continue, 繼續 直到遇到斷點才暫停

(gdb) p name

(gdb) q //quit 退出

通過以上方式可以監視你的程式每個乙個執行步驟 每步之後變數取值是否是你需要的值都可以觀察

快速定位段錯誤的方式:

gcc gdb.c -g

ulimit -c unlimited

./a.out 執行會出段錯誤的程式

ls core //如果產生段錯誤,會產生乙個core檔案

gdb a.out -c core

(gdb) bt **

資料結構與演算法基本

棧的演算法 計算機內部空間是連續儲存的,但是可以通過邏輯上改變記憶體的物理結構,資料在記憶體上呈現出的是連續分布狀態 主要的典型資料結構 在實現棧這種資料結構時,首先要定義乙個陣列和乙個變數。陣列中所包含的元素個數就是棧的大小 棧中最多能存放多少個資料 變數中則儲存著乙個索引,指向儲存在棧中最頂端的...

資料結構與演算法分析記錄 基本資料結構

單鏈表 struct node 找到某一元素 position find elementtype x,list list 刪除某一元素 void delete elementtype x,list l 找到目標元素前的元素 position findprevious elementtype x,li...

演算法與資料結構 五 基本排序演算法

前面幾篇基本上把基本的資料結構都回顧完了,現在開始回顧那些常見的排序演算法。排序是將一組無序的資料根據某種規則重新排列成有序的這麼乙個過程,當時在大學需要我們手工自己實現的主要有三種 選擇排序 插入排序和氣泡排序。因為它比較簡單,所以這裡把他們放到一起作為最基本的排序演算法。插入排序的思路是這樣的 ...