色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

算法和數據結構基礎知識分享(上)

jf_78858299 ? 來源:阿里開發者 ? 作者: 復醉 ? 2023-04-06 16:48 ? 次閱讀

有哪些常見的數據結構?基本操作是什么?常見的排序算法是如何實現的?各有什么優缺點?本文簡要分享算法基礎、常見的數據結構以及排序算法。

一 前言

1 為什么要學習算法和數據結構?

  • 解決特定問題。
  • 深度優化程序性能的基礎。
  • 學習一種思想:如何把現實問題轉化為計算機語言表示。

2 業務開發要掌握到程度?

  • 了解常見數據結構和算法,溝通沒有障礙。
  • 活學活用:遇到問題時知道要用什么數據結構和算法去優化。

二 數據結構基礎

1 什么是數據結構?

數據結構是數據的組織、管理和存儲格式,其使用目的是為了高效的訪問和修改數據。

數據結構是算法的基石。如果把算法比喻成美麗靈動的舞者,那么數據結構就是舞者腳下廣闊而堅實的舞臺。

2 物理結構和邏輯結構的區別?

物理結構就像人的血肉和骨骼,看得見,摸得著,實實在在,如數組、鏈表。

邏輯結構就像人的思想和精神,它們看不見、摸不著,如隊列、棧、樹、圖。

3 線性存儲結構和非線性存儲結構的區別?

  • 線性:元素之間的關系是一對一的,如棧、隊列。
  • 非線性:每個元素可能連接0或多個元素,如樹、圖。

三 算法基礎

1 什么是算法?

  • 數學:算法是用于解決某一類問題的公式和思想。
  • 計算機:一系列程序指令,用于解決特定的運算和邏輯問題。

2 如何衡量算法好壞?

  • 時間復雜度:運行時間長短。
  • 空間復雜度:占用內存大小。

3 怎么計算時間復雜度?

大O表示法(漸進時間復雜度):把程序的相對執行時間函數T(n)簡化為一個數量級,這個數量級可以是n、n^2、logN等。

推導時間復雜度的幾個原則:

  • 如果運行時間是常數量級,則用常數1表示。
  • 只保留時間函數中的最高階項。
  • 如果最高階項存在,則省去最高項前面的系數。

時間復雜度對比:O(1) > O(logn) > O(n) > O(nlogn) > O(n^2)。

不同時間復雜度算法運行次數對比:

圖片

4 怎么計算空間復雜度?

常量空間 O(1):存儲空間大小固定,和輸入規模沒有直接的關系。

線性空間 O(n):分配的空間是一個線性的集合,并且集合大小和輸入規模n成正比。

二維空間 O(n^2):分配的空間是一個二維數組集合,并且集合的長度和寬度都與輸入規模n成正比。

遞歸空間 O(logn):遞歸是一個比較特殊的場景。雖然遞歸代碼中并沒有顯式的聲明變量或集合,但是計算機在執行程序時,會專門分配一塊內存空間,用來存儲“方法調用棧”。執行遞歸操作所需要的內存空間和遞歸的深度成正比。

5 如何定義算法穩定性?

穩定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。

不穩定:如果a原本在b的前面,而a=b,排序之后 a 可能會出現在 b 的后面。

6 有哪些常見算法?

首先要明確:特定算法解決特定問題。

  • 字符串:暴力匹配、BM、KMP、Trie等。
  • 查找:二分查找、遍歷查找等。
  • 排序:冒泡排序、快排、計數排序、堆排序等。
  • 搜索:TFIDF、PageRank等。
  • 聚類分析:期望最大化、k-meanings、k-數位等。
  • 深度學習:深度信念網絡、深度卷積神經網絡、生成式對抗等。
  • 異常檢測:k最近鄰、局部異常因子等。
  • ......

其中,字符串、查找、排序算法是最基礎的算法。

四 常見數據結構

1 數組

1)什么是數組?

數據是有限個相同類型的變量所組成的有序集合。數組中的每一個變量被稱為元素。

圖片

2)數組的基本操作?

讀取O(1)、更新O(1)、插入O(n)、刪除O(n)、擴容O(n)。

2 鏈表

1)什么是鏈表?

鏈表是一種在物理上非連續、非順序的數據結構,由若干個節點組成。

單向鏈表的每一個節點又包含兩部分,一部分是存放數據的變量data,另一部分是指向下一個節點的指針next。

圖片

2)鏈表的基本操作?

讀取O(n)、更新O(1)、插入O(1)、刪除O(1)。

3)鏈表 VS 數組

數組:適合多讀、插入刪除少的場景。

鏈表:適用于插入刪除多、讀少的場景。

圖片

3 棧

1)什么是棧?

棧是一種線性邏輯數據結構,棧的元素只能后進先出。最早進入的元素存放的位置叫做棧底,最后進入的元素存放的位置叫棧頂。

一個比喻,棧是一個一端封閉一端的開放的中空管子,隊列是兩端開放的中空管子。

圖片

2)如何實現棧?

數組實現:

圖片

鏈表實現:

圖片

3)棧的基本操作

入棧O(1)、出棧O(1)。

4)棧的應用?

  • 回溯歷史,比如方法調用棧。
  • 頁面面包屑導航。

4 隊列

1)什么是隊列?

一種線性邏輯數據結構,隊列的元素只能后進后出。隊列的出口端叫做隊頭,隊列的入口端叫做隊尾。

圖片

2)如何實現隊列?

數組實現:

圖片

鏈表實現:

圖片

3)隊列的基本操作?

入隊 O(1)、出隊 O(1)。

4)隊列的應用

  • 消息隊列
  • 多線程的等待隊列
  • 網絡爬蟲的待爬URL隊列

5 哈希表

1)什么是哈希表?

一種邏輯數據結構,提供了鍵(key)和值(value)的映射關系。

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據結構
    +關注

    關注

    3

    文章

    573

    瀏覽量

    40321
  • 排序算法
    +關注

    關注

    0

    文章

    53

    瀏覽量

    10127
  • 存儲結構
    +關注

    關注

    0

    文章

    21

    瀏覽量

    9757
收藏 人收藏

    評論

    相關推薦

    數據結構算法分析(Java版)(pdf)

    數據結構算法分析(Java版)(pdf)http://www.ibeifeng.com/read.php?tid=4812&u=73481【中文】Java數據結構算法中文第
    發表于 12-20 21:22

    數據結構算法分析

    數據結構算法分析
    發表于 06-05 10:46

    請問學習stm32以及ucos ii ucgui需要學習數據結構算法之類的知識嗎?

    學習stm32以及ucos ii ucgui是否需要學習數據結構算法之類的知識
    發表于 06-09 23:22

    數據結構的幾個重要知識

    ,也就掌握好了數據處理的算法,良好的數據結構對于軟件系統的執行效率、數據存儲效率都非常重要。棧的模型以上簡單了解了什么是數據結構
    發表于 02-27 15:01

    數據結構算法核心知識點總結概述

    數據結構算法核心知識點總結概述最近有看一些大佬的專欄,受益匪淺。深刻的覺察到我們要想成為一個偉大的程序員,或者說小一點,成為一個厲害的程序員,基礎知識是核心競爭力也是我們不斷向上提升
    發表于 12-21 08:00

    數據結構算法習題

    數據結構算法習題,ACM專用,刷題初期按照這個地方刷很好
    發表于 03-03 18:25 ?0次下載

    數據結構算法

    全國C語言考試公共基礎知識點——數據結構算法,該資料包含了有關數據結構算法的全部知識點。
    發表于 03-30 14:27 ?0次下載

    數據結構算法分析

    一部淺顯易懂的介紹數據結構算法的書籍。
    發表于 07-14 17:12 ?0次下載

    算法數據結構——接口

    第三章為算法數據結構,本文為3.2.3 接口。
    的頭像 發表于 09-19 17:41 ?8646次閱讀
    <b class='flag-5'>算法</b>與<b class='flag-5'>數據結構</b>——接口

    大牛分享平時如何學習數據結構算法

    數據結構算法的地位對于一個程序員來說不言而喻。今天這篇文章不是來勸你們學習數據結構算法的,也不是來和你們說數據結構
    的頭像 發表于 11-02 11:25 ?3063次閱讀

    數據結構算法知識點有哪些?

    數據結構算法知識點有哪些?
    的頭像 發表于 01-10 15:22 ?8303次閱讀

    數據結構算法分析中的二叉樹與堆有關知識匯總

    該資料包括數據結構算法分析中的二叉樹與堆有關的一些知識
    發表于 11-03 09:37 ?0次下載

    程序設計和數據結構(嵌入式)

    編程的基礎-算法和數據結構入門資料免費下載。
    發表于 04-18 09:35 ?1次下載

    算法和數據結構基礎知識分享(中)

    有哪些常見的數據結構?基本操作是什么?常見的排序算法是如何實現的?各有什么優缺點?本文簡要分享算法基礎、常見的數據結構以及排序算法
    的頭像 發表于 04-06 16:48 ?682次閱讀
    <b class='flag-5'>算法</b><b class='flag-5'>和數據結構</b><b class='flag-5'>基礎知識</b>分享(中)

    算法和數據結構基礎知識分享(下)

    有哪些常見的數據結構?基本操作是什么?常見的排序算法是如何實現的?各有什么優缺點?本文簡要分享算法基礎、常見的數據結構以及排序算法
    的頭像 發表于 04-06 16:48 ?825次閱讀
    <b class='flag-5'>算法</b><b class='flag-5'>和數據結構</b><b class='flag-5'>基礎知識</b>分享(下)
    主站蜘蛛池模板: 98国产精品人妻无码免费 | 四虎视频最新视频在线观看 | 狠狠综合久久综合88亚洲 | 黄色网址在线免费观看 | 国产精品第八页 | 亚洲 欧美 国产 综合久久 | 91欧洲在线视精品在亚洲 | 色内射无码AV | 97精品少妇偷拍AV | 最新国产麻豆精品 | 九色91精品国产网站 | 精品午夜寂寞影院在线观看 | 捏揉舔水插按摩师 | 亚洲精品久久久久中文字幕二区 | 老板揉搓秘书丰满大乳 | 欧美日韩一区不卡在线观看 | 亚洲在线视频自拍精品 | 国产在线观看91精品 | 99日影院在线播放 | 总裁呻吟双腿大开男男H | 国内精品不卡一区二区三区 | 国产精品99久久久久久人韩国 | 成年人免费观看的视频 | 久久精品中文字幕 | 为什么丈夫插我我却喜欢被打着插 | a免费在线观看视频 | 久久青草免费线观最新 | 欧美巨大xxxx做受孕妇视频 | 国产成人午夜精品免费视频 | 中文字幕精品无码一区二区 | 亚洲精品成人无码区一在线观看 | 观赏女性排尿 | 欧美最猛12teevideos | 欧美色偷偷亚洲天堂bt | 国产精品高清免费网站 | MM131亚洲精品久久安然 | 伊人久久大香线蕉综合影 | 天堂岛www天堂资源在线 | 奶好大下面流了好多水水 | 免费无码又爽又黄又刺激网站 | 一个人免费视频在线观看 |