国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)組 容器 遞歸 普通排序 線性排序

這篇具有很好參考價值的文章主要介紹了數(shù)組 容器 遞歸 普通排序 線性排序。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

《數(shù)據(jù)結(jié)構(gòu)與算法之美》讀書筆記

寫在前面

這本書的大部分內(nèi)容比較淺顯,因此只挑DSAA課程上沒有涉及或沒有深入討論的點總結(jié)

第二章

數(shù)組相關(guān)

  1. 提高傳統(tǒng)數(shù)組插入/刪除數(shù)據(jù)效率的方法:

    • 如果插入的數(shù)據(jù)不要求有序,可以直接把某位的原數(shù)據(jù)替換成新數(shù)據(jù),然后把原數(shù)據(jù)放到數(shù)組末尾,避免大面積的數(shù)據(jù)移動。
    • 刪除時不用一個一個刪,可以先把要刪的元素一個個標(biāo)記好,等到數(shù)組中沒有更多的存儲空間時一并集中刪除。
  2. 警惕C語言中數(shù)組訪問越界的問題,通過內(nèi)存公式計算出的內(nèi)存地址是可用的,即便越界,程序也可能不報任何錯。

  3. 容器(ArrayList/vector)VS 傳統(tǒng)數(shù)組:

    • 容器好用,上手快,封裝性強(qiáng),但有時需要裝箱拆箱,存在性能損失。
    • 插入數(shù)據(jù)時的擴(kuò)容操作隱藏了復(fù)雜度,一行操作可能實際上遠(yuǎn)遠(yuǎn)不止。
    • 對于底層的開發(fā),性能優(yōu)化需要做到極致,數(shù)組優(yōu)于容器。

C和Java數(shù)組的實現(xiàn)方式

  • C/C++的多維數(shù)組也是從前往后連續(xù)存儲,Java則是存儲對象的引用。

  • JavaScript根據(jù)存儲內(nèi)容動態(tài)選擇存儲結(jié)構(gòu),可利用ArrayBuffer進(jìn)行底層開發(fā)。

第三章

遞歸

  1. 堆棧溢出不一定是死循環(huán),可能是遞歸太深,棧裝不下了。

  2. 遞歸時常常會不小心重復(fù)計算,可以使用哈希表等事先檢測是否已求解過。

  3. 尾遞歸可避免堆棧溢出,但在實際軟件開發(fā)中并沒有多大用途。

排序

  1. 穩(wěn)定排序與非穩(wěn)定排序:穩(wěn)定排序保持相同元素相對順序不變。

  2. 歸并排序雖穩(wěn)定但空間復(fù)雜度高,通常不如快速排序?qū)嵱谩?/p>

  3. 線性排序:

    • 桶排序:適用于數(shù)據(jù)易于劃分成若干個桶的場景,需注意內(nèi)存占用和數(shù)據(jù)范圍。

    • 計數(shù)排序:桶內(nèi)數(shù)據(jù)相同,適用于高考分?jǐn)?shù)等場景,注意處理負(fù)數(shù)和時間復(fù)雜度。

    • 基數(shù)排序:要求每位排序使用穩(wěn)定排序算法,時間復(fù)雜度近似O(n)。文章來源地址http://www.zghlxwxcb.cn/news/detail-825352.html

到了這里,關(guān)于數(shù)組 容器 遞歸 普通排序 線性排序的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 排序算法:歸并排序(遞歸和非遞歸)

    排序算法:歸并排序(遞歸和非遞歸)

    朋友們、伙計們,我們又見面了,本期來給大家解讀一下有關(guān)排序算法的相關(guān)知識點,如果看完之后對你有一定的啟發(fā),那么請留下你的三連,祝大家心想事成! C 語 言 專 欄: C語言:從入門到精通 數(shù)據(jù)結(jié)構(gòu)專欄: 數(shù)據(jù)結(jié)構(gòu) 個? 人? 主? 頁?: stackY、 ? 目錄 1.歸并排序

    2024年02月07日
    瀏覽(17)
  • 排序算法:快速排序(三種排序方式、遞歸和非遞歸)

    排序算法:快速排序(三種排序方式、遞歸和非遞歸)

    朋友們、伙計們,我們又見面了,本期來給大家解讀一下有關(guān)排序算法的相關(guān)知識點,如果看完之后對你有一定的啟發(fā),那么請留下你的三連,祝大家心想事成! C 語 言 專 欄: C語言:從入門到精通 數(shù)據(jù)結(jié)構(gòu)專欄: 數(shù)據(jù)結(jié)構(gòu) 個? 人? 主? 頁?: stackY、 目錄 前言: 1.快速排

    2024年02月09日
    瀏覽(22)
  • 集合list排序,普通排序,stream(單屬性、多屬性)排序

    1、list基本類型 1.1 Collections.sort排序 1.2 list.sort排序 1.3 list.stream()排序 2、list對象 List類 list = new ArrayList(); 2.1 單屬性排序(升序) list.stream().sorted(Comparator.comparing(類::屬性一)); 2.2 單屬性排序(降序) list.stream().sorted(Comparator.comparing(類::屬性一).reversed()); //先以屬性一升序,而后

    2024年02月16日
    瀏覽(91)
  • 快速排序的非遞歸實現(xiàn)、歸并排序的遞歸和非遞歸實現(xiàn)、基數(shù)排序、排序算法的時間復(fù)雜度

    快速排序的非遞歸實現(xiàn)、歸并排序的遞歸和非遞歸實現(xiàn)、基數(shù)排序、排序算法的時間復(fù)雜度

    我們使用一個棧來模擬函數(shù)的遞歸過程,這里就是在利用棧分區(qū)間。把一個區(qū)間分為 [left,keyi-1][key][keyi+1,right]遞歸下去,直至區(qū)間不存在或left right。 如圖所示: 先把整體的區(qū)間壓進(jìn)去,然后出棧,處理完畢后找到keyi再分為左右兩個區(qū)間。然后往棧里壓有區(qū)間,壓左區(qū)間,就

    2024年02月17日
    瀏覽(24)
  • 快速排序、希爾排序、歸并排序、堆排序、插入排序、冒泡排序、選擇排序(遞歸、非遞歸)C語言詳解

    快速排序、希爾排序、歸并排序、堆排序、插入排序、冒泡排序、選擇排序(遞歸、非遞歸)C語言詳解

    1.排序的概念及其運用 1.1排序的概念 排序 :所謂排序,就是使一串記錄,按照其中的某個或某些的大小,遞增或遞減的排列起來的操作。 穩(wěn)定性 :假定在待排序的記錄序列中,存在多個具有相同的的記錄,若經(jīng)過排序,這些記錄的相對次序保持不變,即在原序

    2024年02月03日
    瀏覽(26)
  • 算法 數(shù)據(jù)結(jié)構(gòu) 遞歸插入排序 java插入排序 遞歸求解插入排序算法 如何用遞歸寫插入排序 插入排序動圖 插入排序優(yōu)化 數(shù)據(jù)結(jié)構(gòu)(十)

    算法 數(shù)據(jù)結(jié)構(gòu) 遞歸插入排序 java插入排序 遞歸求解插入排序算法 如何用遞歸寫插入排序 插入排序動圖 插入排序優(yōu)化 數(shù)據(jù)結(jié)構(gòu)(十)

    1. 插入排序(insertion-sort): ????????????????????????????????????????? 是一種簡單直觀的排序算法。它的工作原理是通過構(gòu)建有序序列,對于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入 ??? 算法穩(wěn)定性: ?????????????????

    2024年02月09日
    瀏覽(23)
  • 八大排序算法之歸并排序(遞歸實現(xiàn)+非遞歸實現(xiàn))

    八大排序算法之歸并排序(遞歸實現(xiàn)+非遞歸實現(xiàn))

    目錄 一.歸并排序的基本思想 歸并排序算法思想(排升序為例) 二.兩個有序子序列(同一個數(shù)組中)的歸并(排升序) 兩個有序序列歸并操作代碼: 三.歸并排序的遞歸實現(xiàn) 遞歸歸并排序的實現(xiàn):(后序遍歷遞歸) 遞歸函數(shù)抽象分析:? 四.非遞歸歸并排序的實現(xiàn) 1.非遞歸歸并排序算法思想

    2024年02月03日
    瀏覽(20)
  • 線性鏈表 反轉(zhuǎn) -(遞歸與非遞歸算法)_20230420

    線性鏈表 反轉(zhuǎn) -(遞歸與非遞歸算法)_20230420

    前言 線性鏈表反轉(zhuǎn)是非常有趣的算法,它可以采用多種方式實現(xiàn),比較簡潔的方法是遞歸反轉(zhuǎn);傳統(tǒng)的方式是利用迭代反轉(zhuǎn),設(shè)定三個變量,采用類似滾動數(shù)組的方式,實現(xiàn)線性表的反轉(zhuǎn);利用線性表頭部插入方法也不失為一種直觀有效的方式,這種情況下需要重新建立線性

    2023年04月24日
    瀏覽(9)
  • 排序算法進(jìn)階——歸并排序【詳細(xì)圖解,遞歸和非遞歸】

    排序算法進(jìn)階——歸并排序【詳細(xì)圖解,遞歸和非遞歸】

    在了解歸并排序之前讓我們先了解一下歸并這一算法吧! 歸并算法一般應(yīng)用于合并兩個已經(jīng)有序的序列,使合并后的序列也有序,是一個時間復(fù)雜度為O(N)的算法,不過一般要借助兩個要排序的序列的元素個數(shù)個額外的空間。 一一一一一一一一一一一一一一一一一一一一一

    2024年01月24日
    瀏覽(21)
  • [C/C++]排序算法 快速排序 (遞歸與非遞歸)

    [C/C++]排序算法 快速排序 (遞歸與非遞歸)

    目錄 ??概念: ??實現(xiàn): ?1.hoare ?2.挖坑法 ?3.雙指針法 ??快速排序遞歸實現(xiàn) ??快速排序非遞歸實現(xiàn) ??????????通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩部分,其中一部分的所有數(shù)據(jù)比另一部分的所有數(shù)據(jù)要小,再按這種方法對這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整

    2024年02月03日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包