數據結構與算法的聯系(筆記)

文章目錄

  • 1. 什么是數據結構
    • 定義
    • 舉例
      • CRUD難道不是都一樣嗎?
    • 總結
  • 2. 什么是算法
  • 3. 數據結構與算法的聯系
    • 舉例
  • 4. 推薦

1. 什么是數據結構

定義

數據結構(data structure)是計算機中存儲、組織數據的方式。
關鍵詞:① 數據 ② 存儲 ③ 組織

舉例

以手機通訊錄存儲聯系人為例:
在這里插入圖片描述
① 數據:人名、手機號
② 存儲數據的方式:列表(list)
③ 組織:CRUD(增刪改查,計算機中的縮寫)
?????增 – 增加一個聯系人信息
?????刪 – 刪除一個聯系人信息
?????改 – 修改聯系人信息(如:改備注)
?????查 – 查詢某個聯系人的信息(如:查手機號)
?????這里的增刪改查都是相對于組織而言的
結論:數據結構這門學科,無非就是跟數據有關。關于數據我們要研究兩個東西,一個是數據的存儲方式,另一個是數據如何CRUD。

CRUD難道不是都一樣嗎?

結論:不一樣
解釋:以快遞格子(二維靜態數組)為例,它的特別之處在于 有行、列之分。這個世界上有很多不同的結構(不同的存儲方式),例如:列表、二維數組、樹、圖、線性表(這個詞在國際上不存在,在國際面試時 就說array-數組,沒有別的詞)。 對于這個格子,我們可以查和改,但是沒法增和刪(因為這個箱子是固定的,總不能把箱子給砸了)。
在這里插入圖片描述
數組有一維、二維以及動態、靜態之分。上述內容其實也可以用一維靜態數組存儲。

總結

① 數據結構其實跟日常生活非常密切
② 數據結構三大點:1.必須要有數據的操作;2.數據是怎么存儲的;3.數據是怎么組織的
③ 這個數據是如何存儲的,就決定了這個數據如何組織(CRUD)。

2. 什么是算法

????????算法就是解決問題采用的步驟和方法
????????算法的目的:算法就是為了研究組織數據結構的最優CRUD解(例如:這個數據我們怎么更快地查出來、這個數據我們怎么更快地去添加、這個數據我們怎么更快地修改、這個數據我們怎么更快地刪除)。簡單來說就是為了解決 “如何更好地組織數據” 這個問題。

3. 數據結構與算法的聯系

????????數據結構和算法是有關系的,但不是從屬關系,不是并列關系,也不是相互影響的關系。組織是數據結構中一個核心的部分,但是我們如何更科學、更高效、更優等地組織,這就需要用到算法,算法是處于 “如何組織” 這一部分的。
????????數據結構與算法之間存在一個清晰的邏輯:1. 必須先搞清楚數據是什么(例如:我們用的QQ號、QQ密碼、支付密碼、個人信息等都存到服務器上的東西都可以稱為數據);2. 然后考慮如何解決這些數據(很重要)。數據結構的目的就是為了研究怎么存儲這些數據、怎么組織這些數據,然后告訴你有哪些組織方式,在什么情況下用什么組織方式更好(例如用格子管理快遞、用列表管理聯系人) 3. 如果條件允許的話,可以進一步考慮一下如何更好地組織這些數據(這就用到了算法)。

舉例

一 、情景:
記者: 請問1-20里,您喜歡哪些數字呢
路人甲:11、3、5、7、8
記者:請問1-20里,您喜歡哪些數字呢
路人乙:12、8、9。剛剛那個人和我一樣喜歡8這個數字么?
記者:稍等一下,我查一下,我剛剛記錄了。是的,她也喜歡。
二、 分析:
數據結構:
????????數據:路人甲和路人乙回復的數字
????????存儲:此處采用兩個一維數組a[30]、b[30]
????????組織:在數組a[30]中查詢數字4的過程。可以采用for循環遍歷數組,看看數組里是否有數字4。
算法:怎么更快的查詢。可以采用二分查找

4. 推薦

筆記來源:直面數據結構課程

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

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

相關文章

基于 Nginx + Spring Boot + Vue + JPA 的網站安全防護指南

引言 在現代互聯網時代,確保網站的安全性非常重要。尤其是基于前后端分離架構,更需要特別注意安全防護。接下來,帶你了解幾種常見的安全攻擊及其應對措施。 常見的安全攻擊及應對措施 1. 跨站腳本攻擊 (XSS) 攻擊描述: 跨站腳…

css簡單易懂的加載動畫,看不會算我輸好吧

效果展示 步驟 第一階段 先準備結構&#xff0c;并且放置12個div&#xff0c;每一個div旋轉30*n度&#xff0c; 做一個圓圈 dom <div class"modal"><div class"loading"><div class"item1"></div><div class&quo…

Spark 分布式彈性計算集(RDD)相關概念介紹

目錄 一、概述 二、RDD的核心概念 2.1 Partition 2.2 Partitioner 2.3 RDD的依賴關系 2.4 Stage 2.5 PreferredLocation 2.6 CheckPoint 三、RDD的持久化 3.1 概述 3.2 概念 3.3 RDD持久化級別 3.3.1 MEMORY_ONLY 3.3.2 MEMORY_AND_DISK 3.3.3 MEMORY_ONLY_SER …

基于語義的法律問答系統

第一步&#xff0c;準備數據集 第二步&#xff0c;構建索引數據集&#xff0c;問答對數據集&#xff0c;訓練數據集&#xff0c;召回評估數據集 第三步&#xff0c;構建dataloader,選擇優化器訓練模型&#xff0c;之后召回評估 第四步&#xff0c;模型動轉靜&#xff0c;之后…

Synchronized底層工作原理

Synchronized 是Java中最常用的內置鎖機制&#xff0c;用于確保多線程環境下的同步。其底層原理涉及到JVM&#xff08;Java虛擬機&#xff09;和字節碼指令。以下是 synchronized 的底層工作原理的詳細介紹&#xff1a; 1. 基本概念 對象頭&#xff08;Object Header&#xf…

【UE5.1 角色練習】15-槍械射擊——子彈發射物

目錄 效果 步驟 一、創建并發射子彈 二、優化子彈 效果 步驟 一、創建并發射子彈 1. 在前面的文章中&#xff08;【UE5.1 角色練習】06-角色發射火球-part1&#xff09;我們創建了藍圖“BP_Skill_FireBall” 這里我們復制一份命名為“BP_Ammo_5mm”&#xff0c;用于表示…

科技的成就(六十一)

567、數據虛擬化 用來描述所有數據管理方法的涵蓋性術語&#xff0c;這些方法允許應用程序檢索并管理數據&#xff0c;且不需要數據相關的技術細節&#xff0c;例如它格式化的方式或物理位置所在。數據整合的過程&#xff0c;以此獲得更多的數據信息&#xff0c;這個過程通常會…

SLAM中的塊矩陣與schur補

文章目錄 SLAM中的塊矩陣與schur補Schur補的另一種解釋對角塊矩陣的逆為各個塊的逆的組合 SLAM中的塊矩陣與schur補 Schur補的另一種解釋 Schur從概率角度來解釋是比較常見的一種推導&#xff0c;可以參考博客https://blog.csdn.net/weixin_41469272/article/details/1219944…

若依搭建 帝可得 售貨機 筆記

一、搭建項目 1.后端gitee鏈接&#xff1a; 啟動項目時記得修改mysql和redis的相關信息&#xff1b;創建項目相關數據庫&#xff0c;并導入初始化的SQL腳本 dkd-parent: 帝可得后臺管理系統 (gitee.com) 2.前端gitee鏈接&#xff1a; 啟動項目時記得安裝依賴&#xff1a;np…

Github Action 自動部署更新靜態網頁服務

本文首發于 Anyeの小站&#xff0c;點擊跳轉 獲得更優質的閱讀體驗 前言 貼一段胡話 在用過 應用&#xff1a;靜態網頁服務 之后&#xff0c;事實證明&#xff1a; 總而言之&#xff0c;自動化是一個很令人著迷的東西&#xff0c;擺脫重復繁瑣的工作&#xff0c;解放了雙手的…

JCR一區 | Matlab實現GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征輸入數據分類預測/故障診斷

JJCR一區 | Matlab實現GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征輸入數據分類預測/故障診斷 目錄 JJCR一區 | Matlab實現GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征輸入數據分類預測/故障診斷分類效果格拉姆矩陣圖GAF-PCNN-MATTGASF-CNNGADF-CNN 基本介紹程序設計參考資料 分…

【45 Pandas+Pyecharts | 去哪兒海南旅游攻略數據分析可視化】

文章目錄 &#x1f3f3;??&#x1f308; 1. 導入模塊&#x1f3f3;??&#x1f308; 2. Pandas數據處理2.1 讀取數據2.2 查看數據信息2.3 日期處理&#xff0c;提取年份、月份2.4 經費處理2.5 天數處理 &#x1f3f3;??&#x1f308; 3. Pyecharts數據可視化3.1 出發日期_…

華南師范大學“大學生校外實踐教學基地”授牌儀式暨見習參觀活動圓滿結束

為促進校企合作的深入發展&#xff0c;培育出具有實際應用技能的人才&#xff0c;7月9日&#xff0c;華南師范大學數學科學院與廣東泰迪智能科技股份有限公司聯合開展“大學生校外實踐教學基地”授牌儀式暨見習參觀活動。華南師范大學數學科學院數據科學系主任陳艷男、副主任陳…

深入理解model.eval()與torch.no_grad()

model.eval() 使用model.eval()切換到測試模式&#xff0c;不會更新模型的w&#xff08;權重&#xff09;&#xff0c;b&#xff08;偏置&#xff09;參數通知dropout層和batchnorm層在train和val中間進行切換&#xff1a; 在train模式&#xff0c;dropout層會按照設定的參數p…

Idea 2023 使用GitLab提交代碼提示輸入Token

項目場景&#xff1a; 今天電腦換硬盤了&#xff0c;安裝了 IDEA2023 款的社區版開發工具&#xff0c;下載代碼后&#xff0c;提交并推送代碼到遠程服務器的時候&#xff0c;提示輸入Token&#xff0c;并不是用戶名和密碼。 問題描述 推送代碼到遠程GitLab本地倉庫的時候&…

單鏈表--續(C語言詳細版)

2.6 在指定位置之前插入數據 // 在指定位置之前插入數據 void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x); 分為兩種情況&#xff1a;1. 插入的數據在鏈表中間&#xff1b;2. 插入的數據在鏈表的前面。 // 在指定位置之前插入數據 void SLTInsert(SLTNode** …

AI繪畫何以突飛猛進? 從歷史到技術突破, 一文讀懂火爆的AI繪畫發展史

前言 自從前段時間偶然間被當下AI繪畫的水平震住之后&#xff08;超越一切的AI作畫神器&#xff0c;和它創作的234個盔甲美女未來戰士&#xff09; &#xff0c;作者深感當今AI繪畫的飛速進展或許已遠超所有人的預期。 而這里的前因后果&#xff0c;包括AI繪畫的歷史&#xff…

十九.升職加薪系列-JVM優化-解決JVM性能瓶頸的JIT即時編譯器

前言 在很多年以前&#xff0c;做C或者C的程序員經常說Java語言的運行速度不如C或C&#xff0c;Java運行速度慢主要是因為它是解釋執行的&#xff0c;而C或C是編譯執行的&#xff0c;解釋執行需要通過JVM虛擬機將字節碼實時翻譯成機器碼&#xff08;邊翻譯邊執行&#xff09;&…

Rust 版本升級:rustup update stable 報錯

Rust 版本升級 rustup update stable 報錯 一、報錯內容 error: could not download file from ‘https://static.rust-lang.org/dist/channel-rust-stable.toml.sha256’ to ‘/Users/xxx/.rustup/tmp/rv6vdfu3eupwo64m_file’: failed to make network request: error sendi…

【實戰場景】@Transactional中使用for update的注意點

【實戰場景】Transactional中使用for update的注意點 開篇詞&#xff1a;干貨篇&#xff1a;知識回顧注意點1.鎖的范圍和粒度&#xff1a;2.事務的隔離級別&#xff1a;3.死鎖&#xff1a;4.性能影響&#xff1a;5.事務的邊界&#xff1a;6.異常處理&#xff1a;7. 數據庫和存儲…