在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

算法和數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識分享(上)

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

有哪些常見的數(shù)據(jù)結(jié)構(gòu)?基本操作是什么?常見的排序算法是如何實現(xiàn)的?各有什么優(yōu)缺點?本文簡要分享算法基礎(chǔ)、常見的數(shù)據(jù)結(jié)構(gòu)以及排序算法。

一 前言

1 為什么要學(xué)習(xí)算法和數(shù)據(jù)結(jié)構(gòu)?

  • 解決特定問題。
  • 深度優(yōu)化程序性能的基礎(chǔ)。
  • 學(xué)習(xí)一種思想:如何把現(xiàn)實問題轉(zhuǎn)化為計算機語言表示。

2 業(yè)務(wù)開發(fā)要掌握到程度?

  • 了解常見數(shù)據(jù)結(jié)構(gòu)和算法,溝通沒有障礙。
  • 活學(xué)活用:遇到問題時知道要用什么數(shù)據(jù)結(jié)構(gòu)和算法去優(yōu)化。

二 數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)

1 什么是數(shù)據(jù)結(jié)構(gòu)?

數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的組織、管理和存儲格式,其使用目的是為了高效的訪問和修改數(shù)據(jù)。

數(shù)據(jù)結(jié)構(gòu)是算法的基石。如果把算法比喻成美麗靈動的舞者,那么數(shù)據(jù)結(jié)構(gòu)就是舞者腳下廣闊而堅實的舞臺。

2 物理結(jié)構(gòu)和邏輯結(jié)構(gòu)的區(qū)別?

物理結(jié)構(gòu)就像人的血肉和骨骼,看得見,摸得著,實實在在,如數(shù)組、鏈表。

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

3 線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)的區(qū)別?

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

三 算法基礎(chǔ)

1 什么是算法?

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

2 如何衡量算法好壞?

  • 時間復(fù)雜度:運行時間長短。
  • 空間復(fù)雜度:占用內(nèi)存大小。

3 怎么計算時間復(fù)雜度?

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

推導(dǎo)時間復(fù)雜度的幾個原則:

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

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

不同時間復(fù)雜度算法運行次數(shù)對比:

圖片

4 怎么計算空間復(fù)雜度?

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

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

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

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

5 如何定義算法穩(wěn)定性?

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

不穩(wěn)定:如果a原本在b的前面,而a=b,排序之后 a 可能會出現(xiàn)在 b 的后面。

6 有哪些常見算法?

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

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

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

四 常見數(shù)據(jù)結(jié)構(gòu)

1 數(shù)組

1)什么是數(shù)組?

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

圖片

2)數(shù)組的基本操作?

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

2 鏈表

1)什么是鏈表?

鏈表是一種在物理上非連續(xù)、非順序的數(shù)據(jù)結(jié)構(gòu),由若干個節(jié)點組成。

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

圖片

2)鏈表的基本操作?

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

3)鏈表 VS 數(shù)組

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

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

圖片

3 棧

1)什么是棧?

棧是一種線性邏輯數(shù)據(jù)結(jié)構(gòu),棧的元素只能后進(jìn)先出。最早進(jìn)入的元素存放的位置叫做棧底,最后進(jìn)入的元素存放的位置叫棧頂。

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

圖片

2)如何實現(xiàn)棧?

數(shù)組實現(xiàn):

圖片

鏈表實現(xiàn):

圖片

3)棧的基本操作

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

4)棧的應(yīng)用?

  • 回溯歷史,比如方法調(diào)用棧。
  • 頁面面包屑導(dǎo)航。

4 隊列

1)什么是隊列?

一種線性邏輯數(shù)據(jù)結(jié)構(gòu),隊列的元素只能后進(jìn)后出。隊列的出口端叫做隊頭,隊列的入口端叫做隊尾。

圖片

2)如何實現(xiàn)隊列?

數(shù)組實現(xiàn):

圖片

鏈表實現(xiàn):

圖片

3)隊列的基本操作?

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

4)隊列的應(yīng)用

  • 消息隊列
  • 多線程的等待隊列
  • 網(wǎng)絡(luò)爬蟲的待爬URL隊列

5 哈希表

1)什么是哈希表?

一種邏輯數(shù)據(jù)結(jié)構(gòu),提供了鍵(key)和值(value)的映射關(guān)系。

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關(guān)推薦

    數(shù)據(jù)結(jié)構(gòu)算法分析(Java版)(pdf)

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

    數(shù)據(jù)結(jié)構(gòu)算法分析

    數(shù)據(jù)結(jié)構(gòu)算法分析
    發(fā)表于 06-05 10:46

    請問學(xué)習(xí)stm32以及ucos ii ucgui需要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)算法之類的知識嗎?

    學(xué)習(xí)stm32以及ucos ii ucgui是否需要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)算法之類的知識
    發(fā)表于 06-09 23:22

    數(shù)據(jù)結(jié)構(gòu)的幾個重要知識

    ,也就掌握好了數(shù)據(jù)處理的算法,良好的數(shù)據(jù)結(jié)構(gòu)對于軟件系統(tǒng)的執(zhí)行效率、數(shù)據(jù)存儲效率都非常重要。棧的模型以上簡單了解了什么是數(shù)據(jù)結(jié)構(gòu)
    發(fā)表于 02-27 15:01

    數(shù)據(jù)結(jié)構(gòu)預(yù)算法核心知識點總結(jié)概述

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

    數(shù)據(jù)結(jié)構(gòu)算法習(xí)題

    數(shù)據(jù)結(jié)構(gòu)算法習(xí)題,ACM專用,刷題初期按照這個地方刷很好
    發(fā)表于 03-03 18:25 ?0次下載

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

    全國C語言考試公共基礎(chǔ)知識點——數(shù)據(jù)結(jié)構(gòu)算法,該資料包含了有關(guān)數(shù)據(jù)結(jié)構(gòu)算法的全部知識點。
    發(fā)表于 03-30 14:27 ?0次下載

    數(shù)據(jù)結(jié)構(gòu)算法分析

    一部淺顯易懂的介紹數(shù)據(jù)結(jié)構(gòu)算法的書籍。
    發(fā)表于 07-14 17:12 ?0次下載

    算法數(shù)據(jù)結(jié)構(gòu)——接口

    第三章為算法數(shù)據(jù)結(jié)構(gòu),本文為3.2.3 接口。
    的頭像 發(fā)表于 09-19 17:41 ?8588次閱讀
    <b class='flag-5'>算法</b>與<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>——接口

    大牛分享平時如何學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)算法

    數(shù)據(jù)結(jié)構(gòu)算法的地位對于一個程序員來說不言而喻。今天這篇文章不是來勸你們學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)算法的,也不是來和你們說數(shù)據(jù)結(jié)構(gòu)
    的頭像 發(fā)表于 11-02 11:25 ?3019次閱讀

    數(shù)據(jù)結(jié)構(gòu)算法知識點有哪些?

    數(shù)據(jù)結(jié)構(gòu)算法知識點有哪些?
    的頭像 發(fā)表于 01-10 15:22 ?8255次閱讀

    數(shù)據(jù)結(jié)構(gòu)算法分析中的二叉樹與堆有關(guān)知識匯總

    該資料包括數(shù)據(jù)結(jié)構(gòu)算法分析中的二叉樹與堆有關(guān)的一些知識
    發(fā)表于 11-03 09:37 ?0次下載

    程序設(shè)計和數(shù)據(jù)結(jié)構(gòu)(嵌入式)

    編程的基礎(chǔ)-算法和數(shù)據(jù)結(jié)構(gòu)入門資料免費下載。
    發(fā)表于 04-18 09:35 ?1次下載

    算法和數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識分享(中)

    有哪些常見的數(shù)據(jù)結(jié)構(gòu)?基本操作是什么?常見的排序算法是如何實現(xiàn)的?各有什么優(yōu)缺點?本文簡要分享算法基礎(chǔ)、常見的數(shù)據(jù)結(jié)構(gòu)以及排序算法
    的頭像 發(fā)表于 04-06 16:48 ?647次閱讀
    <b class='flag-5'>算法</b><b class='flag-5'>和數(shù)據(jù)結(jié)構(gòu)</b><b class='flag-5'>基礎(chǔ)知識</b>分享(中)

    算法和數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識分享(下)

    有哪些常見的數(shù)據(jù)結(jié)構(gòu)?基本操作是什么?常見的排序算法是如何實現(xiàn)的?各有什么優(yōu)缺點?本文簡要分享算法基礎(chǔ)、常見的數(shù)據(jù)結(jié)構(gòu)以及排序算法
    的頭像 發(fā)表于 04-06 16:48 ?789次閱讀
    <b class='flag-5'>算法</b><b class='flag-5'>和數(shù)據(jù)結(jié)構(gòu)</b><b class='flag-5'>基礎(chǔ)知識</b>分享(下)
    主站蜘蛛池模板: 女bbbbxxxx毛片视频丶 | 亚洲网站免费看 | 一级特黄女人生活片 | 青娱乐99| 奇米影视大全 | 色综合色狠狠天天综合色hd | 久久久噜噜噜久久久午夜 | 国模私拍视频在线 | 国产人成午夜免费噼啪视频 | 日本一区不卡视频 | 日韩精品免费一级视频 | 久久精品国波多野结衣 | 手机在线观看视频你懂的 | 99精品久久99久久久久久 | 人人爱爱人人 | 国产福利午夜自产拍视频在线 | 亚洲福利秒拍一区二区 | 好紧好湿好黄的视频 | h视频免费网站 | 亚洲jizzjizz在线播放久 | 色综合激情丁香七月色综合 | 久久久免费观看 | 天天操天天干天天舔 | 天堂国产| 天天做天天爱夜夜想毛片 | 一区在线观看视频 | 欧美午夜免费观看福利片 | 日本a级精品一区二区三区 日本a级特黄三级三级三级 | 精品一区二区视频 | 免费看黄视频的网站 | 色综合中文网 | 老师受年下高h男 | 国产情侣出租屋露脸实拍 | 又黄又粗暴的120秒免费gif视频 | 波多野结衣福利 | 色婷婷六月丁香在线观看 | 美女张开腿露尿口给男人亲 | 色播久久 | 成人网18免费下 | 人人人草| 午夜色综合 |