算法章節 數組、鏈表、棧、隊列

數組

概念與特性

1,數組是線性表,用一組連續的內存空間存儲?組具有相同類型的數據

2,最大的特性是?持按照下標O(1)時間復雜度內快速訪問數組元素

3,?維數組尋址公式:a[i]_addr = base_addr + i * data_type_size

操作與復雜度

1. 隨機訪問時間復雜度是O(1);
2. 在數組中間任意位置插?數據的時間復雜度是O(n);

3. 刪除數組中任意位置數據的時間復雜度是O(n)

應?場景數組是其他數據結構和算法的實現基礎,?如棧、隊列、堆、?分查找等
其他知識點1. 數組需要連續的內存空間,對內存的要求較?;
2. 數組中的數據連續存儲,對CPU緩存友好;
3. ?部分編程語?中,數組下標都是從0開始編號;
4. ?部分編程語?中,都提供了容器類型以?持動態數組(動態擴容);
5. 編程語?中的數組類型并不等同于數據結構中講的數組;
掌握程度能夠??動?實現?個動態數組類

鏈表

概念與特性1. 鏈表是線性表,不需要連續的內存空間來存儲元素,通過指針將串聯每個鏈表中的結點;
2. 常?的鏈表結構有:單鏈表、雙向鏈表、循環鏈表,其中雙向鏈表因為?持在O(1)時間復雜度內找到前驅結點,在實際開發中最常?;
操作與復雜度

1. 與數組對?,查找第i個元素的時間復雜度是O(n);

2. 在已知前驅結點的情況下,單鏈表中插?數據的時間復雜度是O(1);
3. 在已知前驅結點的情況下,單鏈表中刪除數據的時間復雜度是O(1);
注意:上?的插?、刪除操作,都是針對已知前驅結點的情況,如果未知前驅結點,在單鏈表中插?、刪除數據時間復雜度是O(n),?在雙向鏈表 中插?、刪除數據的時間復雜度仍然是O(1)。這也是雙向鏈表?單鏈表更常?的主要原因。

應?場景鏈表是其他數據結構和算法的實現基礎,?如跳表、散列表等
其他知識點1. 鏈表中的數據不連續存儲,對CPU緩存不友好;
2. 在實際的編程中,可定義有頭鏈表,也可以定義?頭鏈表;有頭鏈表指的是鏈表中的頭結點不存儲數據;
掌握程度

1. 熟練實現單鏈表、雙向鏈表、循環鏈表的定義和操作

2. 熟練實現經典的鏈表題?,?如反轉鏈表、鏈表求中間結點、合并有序鏈表、刪除鏈表倒數第K個結點等;

概念與特性1. 棧是?種操作受限的線性表,只能在?端插?刪除數據;
2. 棧的最?特性是先進后出;
操作與復雜度1. ?棧操作,在棧頂放?數據,時間復雜度是O(1);
2. 出棧操作,從棧頂取出數據,時間復雜度是O(1);
應?場景1. 函數調?棧;
2. 編譯器利?棧來實現表達式求值;
3. 瀏覽器中的前進后退功能的實現也會?到棧;
其他知識點1. 棧既可以?數組來實現,也可以?鏈表來實現;
2. 基于數組實現的?持動態擴容的棧的插?操作的均攤時間復雜度是O(1);
掌握程度1. 熟練利?數組實現?個棧;
2. 熟練利?鏈表實現?個棧;
3. 掌握基于數組實現的?持動態擴容的棧的插?操作的時間復雜度分析;
4. ?棧檢查括號是否匹配,?如:{[()]()[{}]}或[{()}([])]等都為合法格式,?{[}()]或[({)]為不合法的格式;

隊列

概念與特性1. 隊列是?種操作受限的線性表,只能在兩端插?、刪除數據;
2. 隊列的最?特性是先進先出;
?
操作與復雜度1. ?隊操作,在隊尾插?數據,時間復雜度是O(1);
2. 出隊操作,從隊頭取出數據,時間復雜度是O(1);
應?場景隊列常?在有限資源池中,?于排隊請求,?如數據庫連接池等;
其他知識點1. 隊列既可以?數組來實現,也可以?鏈表來實現;
2. 最常使?的隊列是基于數組實現的循環隊列;
掌握程度熟練實現?個循環隊列,重點是掌握隊列的判空和判滿條件;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446749.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446749.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446749.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

武忠祥.高等數學.基礎課-第一章函數 極限 連續P10

sin(1/x) 詳細解析網址 1.圖像 2.極限 x–>0時,函數極限不存在 sin2x 詳細作圖網址 1.圖像 2.周期為Π f(x)周期為T,f(axb)周期為T/|a| 所以sinx周期為2Π,sin2x周期為2Π/2Π |sinx| 詳細講解網址 1.圖像 2.周期:Π 3.絕對值 (1)y|sinx|的圖…

Java命令:jstat — 查看JVM的GC信息

文章目錄一、簡介二、常用命令1、jstat -class pid : class loader行為統計2、jstat -compiler pid : JIT編譯器行為統計3、jstat -gc pid 5000 20 : 垃圾回收堆行為統計4、jstat -gccapacity pid 5000 20 : 堆內存統計5、jstat -gcutil pid 5000 20 : 總結垃圾回收統計6、jsta…

算法章節 遞歸、排序、?分查找

遞歸 概念與特性函數調?函數?身的編程?式叫做遞歸,調?為”遞“,返回為”歸“三個條件1. ?個問題的解可以分解為多個?問題的解; 2. 分解之后的?問題,除了數據規模不同,求解思路跟原問題相同; 3. 存在…

codeforces 50A-C語言解題報告

50A題目網址 解題報告-others 題目解析 1.輸入n x m大小的木板,使用21大小的多米諾去填滿,求最多的多米諾數目 2.通過分析把木板分為奇數和偶數的情況 1)有一邊是偶數的情況: 使用2去填滿 2)兩個邊都是奇數 奇數-1偶數 還是讓木板的(奇數-1)邊去和2平行,再加上 (m-1)/2(n/1)…

Java命令:jps — 查看進程信息

文章目錄一、簡介二、常用命令1、jps2、jps -l3、jps -q4、jps -m5、jps -v6、jps失效一、簡介 JVM Process Status Tool,顯示指定系統內所有的HotSpot虛擬機進程。 功能: 顯示當前所有java進程pid的命令,我們可以通過這個命令來查看到底啟…

操作系統概述 記錄操作系統相關知識

操作系統 現代計算機系統由一個或多個處理器、主存、打印機、鍵盤、鼠標、顯示器、網絡接口以及各種輸入/輸出設備構成。上面提到的這些東西都屬于硬件資源,用戶不會直接和硬件進行交互,計算機安裝了一層軟件,這層軟件能夠通過響應用戶輸入的…

2014年英語一作文partA

作文講解網址 題目 Write a letter of about 100 words to the president of your university, suggesting how to improve students’ physical condition. You should include the details you think necessary. You should write neatly on the ANSWER SHEET. Do not sign…

JDK工具使用大全

文章目錄一、簡介一、簡介 在JDK的bin目錄下有很多命令行工具: 常用工具使用詳解如下: Java命令:jps — 查看進程信息 Java命令:jstack — 獲取線程dump信息 Java命令:jmap — 打印指定進程的共享對象內存映射或…

Linux進程 excel族函數的用法

介紹 使用fork創建一個進程之后,經常會在新進程中調用exec函數執行別的程序當前進程調用exec函數之后,這個進程會被完全替代換成新的程序,即便如此仍然是同一個進程,進程ID不變函數族 execl execlp execle execvp execvpe頭文件 …

codeforces 118A-C語言解題報告

118A題目網址 題目解析 1.輸入一個英語字符串,要求把其中的元音字母刪去(元音是字母“A”、“O”、“Y”、“E”、“U”、“I”包括大小寫,其余的是輔音),把剩余的輔音字母全部變為小寫,并在每一個輔音字母之前加上一個. 如: 輸入: Codeforces 輸出: .c.d.f.r.c.s…

ArrayList和HashMap遍歷比較

目錄一、ArrayList遍歷方式1、普通for循環遍歷2、增強for循環遍歷3、Iterator迭代器遍歷4、三種方式比較二、Map遍歷方式1、增強for循環 keySet() 遍歷2、增強for循環 entrySet() 遍歷3、Iterator keySet() 遍歷4、Itorator entrySet() 遍歷5、四種方式比較三、java開發手冊…

C++primer 12章 動態內存和智能指針

C引入智能指針的目的 使用智能指針來管理動態分配的對象,當一個對象應該被釋放的時候,指向他的智能指針確保自動釋放它 內存分配 靜態內存:局部static對象、類static數據成員、定義在任何函數之外的變量棧內存:定義在函數內的非…

Mac下iTerm2的安裝與配置

目錄一、iTerm2簡介二、下載以及安裝三、iTerm2主題配置四、配置Oh My Zsh1、安裝方式(1)一鍵安裝(2)手動安裝3、切換zsh4、修改主題五、配置Meslo字體六、聲明高亮七、自動建議填充八、iTerm2快速隱藏和顯示九、iTerm2隱藏用戶名…

codeforces 282A-C語言解題報告

282A題目網址 題目解析 1.第一行輸入n(表示有n條語句都要執行),再輸入X,X(都表示X1),–X,X–(都表示X-1),最初X0,輸出X的值 2.使用字符數組去存放每一行的字符串,因為字符串,所以直接整體存入scanf("%s",c); 3.因為字符數組最后一個是’\0’去表示末尾,所以要開辟…

Java命令:jinfo — 查看進程參數

目錄一、簡介二、常用命令1、jinfo -flags pid : 打印當前指定java進程中已經設定的所有JVM參數信息2、jinfo -flag pid : 打印指定名稱的參數3、jinfo -flag [|-] pid : 打開或關閉參數4、jinfo -sysprops pid : 打印當前java進程中設定的系統環境參數一、簡介 jinfo 是 JDK …

C++primer第八章 IO庫 8.1 IO類

IO庫設施 istream (輸入流)類型,提供輸入操作。ostream (輸出流)類型,提供輸出操作。cin,—個 istream對象,從標準輸入讀取數據。cout, 一個ostream對象,向標準輸出寫入數據。cerr…

2014年英語一作文partB漫畫作文

題目 Write an essay of 160-200 words based on the following drawing.In your essay you should describe the drawing brieflyexplain its intended meaning,give your comments 做題點 1.使用三段式,第一段:圖片內容;第二段:圖片暗示;第三段:寫自己的評論 2.描述圖片…

Spring Cloud 系列之 Nacos 配置中心

目錄一、Nacos簡介二、Nacos安裝及配置1、環境準備2、安裝包下載(1)源碼方式(2)發行包方式3、啟動Nacos服務4、Nacos數據庫配置(1)MySQL數據源(2)初始化 MySQL 數據庫(3&…

C++primer第八章 IO庫 8.2 文件輸入輸出

8.2文件輸入輸出 頭文件fstream定義了三個類型來支持文件IO:ifstream從一個給定文件讀取數據,ofstream向一個給定文件寫入數據,以及fstream可以讀寫給定文件。在17.5.3節中(第676頁)我們將介紹如何對同一個文件流既讀…

codeforces 112A-C語言解題報告

112A題目網址 題目解析 1.輸入兩行字符串,不區分大小寫地使用字典序去比較大小 A<B -1 A>B 1 AB 0 舉例: 輸入 abcdefg AbCdEfF 輸出 1 2.字典序:在遇到第一個不同的字符時,比較的大小,就是字符串的大小 列舉法: 1.列出所有情況 1)a[i]是大寫,b[i]是小寫 a[i]轉換為小…