2026《數據結構》考研復習筆記四(緒論)

緒論

  • 前言
  • 時間復雜度分析

前言

由于先前筆者花費約一周時間將王道《數據結構》知識點大致過了一遍,圈畫下來疑難知識點,有了大致的知識框架,現在的任務就是將知識點逐個理解透徹,并將leetcode刷題與課后刷題相結合。因此此后的過程中,整理的筆記不僅包含課本知識點,還包含經典課后題講解(主要是筆者認為重要的)以及leetcode代碼(用于深入理解重要知識點)。綜上,復習思路為:大致過一遍知識點有個系統框架->寫代碼深入理解->刷題適應考試模式

經復習,我將本書大致分為四部分——第一章:緒論(主要是算法效率的度量),第二章+第三章+第四章:線性結構(包括數組、鏈表、棧、隊列以及串),第五章+第六章:非線性結構(包括樹、圖),第七章+第八章:實際應用(包括順序查找、樹形查找、散列查找以及各種排序算法)。

本篇文章為第一部分,除了一些零散的概念性知識,只有一個較為重要的考點——時間復雜度分析。記住結論即可,有興趣的同學可以自行推理(本來是想寫一下的,但是太費時間了,而且估計看的人不多,所以自行推理吧)

時間復雜度分析

我們將循環分為兩種類型——等差遞增和等比遞增(遞減可以轉化為遞增)。常見形式如:

  • 等差遞增:for(int i=0;i<n;i++)
  • 等比遞增:for(int i=1;i<n;i*=2)

為了找出一般規律,我們接下來探究等差遞增和等比遞增的一般形式:

  • 等差遞增:for(int i=a0;i<n;i+=d)。其中a0為首項,d為等差
  • 等比遞增:for(int i=a0;i<n;i*=q)。其中a0為首項,q為等比

一、單層for循環

類型 時間復雜度
等差for(int i=a~0~;i< n;i+=d) O(n)
等比for(int i=a~0~;i< n;i*=q) O(logn)

推導過程:
(假設運行次數為t,即最后一次運行i=at
1.對于等差遞增,有n-d<=at<n,即n-d<=a0+t * d<n,推導出(n-d-a0)/d<=t<(n-a0)/d,忽略常數,有時間復雜度為O(n)
2.對于等比遞增,有n/q<=at<n,即n/q<=a0 * qt<n,推導出logq(n/(q * a0))<=t<logq(n/a0),經過換底公式后忽略常數,有時間復雜度為O(logn)

二、雙層for循環
首先將雙層for循環分為兩種類型:

  • 上下變量無關:上層遞增變量與下層遞增變量沒有直接關系。如:
    for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
  • 上下變量有關:下層遞增變量依賴于上層遞增變量。如:
    for(int i=0;i<n;i++)
    for(int j=0;j<i;j++)//j的初始值為i

    同時我們將遞增類型分為兩種類型:
  • 加法(等差遞增):for(int i=a0;i<n;i+=d)。其中a0為首項,d為等差
  • 乘法(等比遞增):for(int i=a0;i<n;i*=q)。其中a0為首項,q為等比

假設兩層for循環的判斷條件都是n(即i<n、j<n):

上下變量無關

第一層for循環 第二層for循環 時間復雜度
乘法 乘法 O(log2n)
乘法 加法 O(nlogn)
加法 乘法 O(nlogn)
加法 加法 O(n2)

上下變量有關

第一層for循環 第二層for循環 時間復雜度
乘法 乘法 O(log2n)
乘法 加法 O(n)
加法 乘法 O(nlogn)
加法 加法 O(n2)

僅有先乘后加的時候有區別,前者為O(nlogn)后者為O(n)——參見2022統考真題,其中便考察了這個知識點

注意:對于上下變量有關,第一層為加法,第二層為乘法的時候,最終的時間復雜度為O(logn!),根據斯特林公式,n!≈√(2nπ)(n/e)n,取對數后化簡為nlogn

至于上下for循環參數不一致,在此也不再討論(出題概率較低)

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

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

相關文章

Vmware安裝centos7和Redis

2025最詳細vmware安裝centos 7 教程_嗶哩嗶哩_bilibili 1.上面是B站安裝Centos7參考視頻 2.安裝完成需要配置網絡 (新手教程)VMware安裝CentOS7_嗶哩嗶哩_bilibili 重啟網絡服務: ping www.baidu.com ip addr 查看ip地址 兩種重啟方式 3.關閉防火墻 依次執行如下三條命令 …

二進制部署Kubernetes1.32.4最新版本高可用集群及附加組件

一、前言 在云原生技術席卷全球的今天&#xff0c;Kubernetes&#xff08;K8s&#xff09;已成為容器編排領域的事實標準。當大家都習慣了kubeadm、kubeasz等自動化工具一鍵部署的便利時&#xff0c;選擇通過二進制方式手動搭建K8s集群更像是一場"知其然亦知其所以然&qu…

樹莓派系統中設置固定 IP

在基于 Ubuntu 的樹莓派系統中&#xff0c;設置固定 IP 地址主要有以下幾種方法&#xff1a; 方法一&#xff1a;使用 Netplan 配置&#xff08;Ubuntu 18.04 及以上版本默認使用 Netplan&#xff09; 查看網絡接口名稱 在終端輸入ip link或ip a命令&#xff0c;查看當前所使…

主流單片機與編程調試工具對應關系表梳理

單片機系列/型號 | 官方IDE/工具鏈 | 調試器/燒錄器 | 第三方支持工具 |調試接口協議 | 特點與適用場景| | STMicroelectronics (STM32) STM32全系列 STM32CubeIDE ST-LINK/V2/V3 - PlatformIO (VS Code插件) SWD/JTAG 官方集成開發環境&#xff0c;支持HAL庫&#xff0c;免費…

VulnHub-DarkHole_2靶機滲透教程

1.靶機部署 [Onepanda] Mik1ysomething 靶機下載&#xff1a;https://download.vulnhub.com/darkhole/darkhole_2.zip 直接使用VMware導入打開就行 注意&#xff1a;靶機的網絡連接模式必須和kali一樣&#xff0c;讓靶機跟kali處于同一網段&#xff0c;這樣kali才能掃出靶機…

USO服務器操作系統手動升級GCC 12.2.0版本

1. 從 GNU 官方 FTP 服務器下載 GCC 12.2.0 的源碼包&#xff0c;并解壓進入源碼目錄。 wget https://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.gz tar -zxvf gcc-12.2.0.tar.gz cd gcc-12.2.0 2. 運行腳本下載并配置 GCC 編譯所需的依賴庫。此步驟會自動下載如 GMP…

設計模式基礎概念(行為模式):觀察者模式(Observer)

概述 我們可以發現這樣一個場景&#xff1a;如果你訂閱了一份雜志或報紙&#xff0c; 那就不需要再去報攤查詢新出版的刊物了。 出版社 &#xff08;即應用中的 “發布者&#xff08;publisher&#xff09;”&#xff09; 會在刊物出版后 &#xff08;甚至提前&#xff09; 直…

JavaFX實戰:從零到一實現一個功能豐富的“高級反應速度測試”游戲

大家好&#xff01;今天我們不搞簡單的“紅變綠就點”了&#xff0c;來點硬核的&#xff01;我們要用 JavaFX 從頭開始&#xff0c;構建一個更復雜、更有趣也更考驗能力的“高級反應速度測試”游戲。這個版本將引入選擇反應時 (Choice Reaction Time) 的概念——你需要在多個干…

CSS 選擇器介紹

CSS 選擇器介紹 1. 基本概念 CSS&#xff08;層疊樣式表&#xff09;是一種用于描述 HTML 或 XML 文檔外觀的語言。通過 CSS&#xff0c;可以控制網頁中元素的布局、顏色、字體等視覺效果。而 CSS 選擇器則是用來指定哪些 HTML 元素應該應用這些樣式的工具。 2. 基本選擇器 …

Vue3父子組件數據同步方法

在 Vue 3 中&#xff0c;當子組件需要修改父組件傳遞的數據副本并同步更新時&#xff0c;可以通過以下步驟實現&#xff1a; 方法 1&#xff1a;使用 v-model 和計算屬性&#xff08;實時同步&#xff09; 父組件&#xff1a; vue <template><ChildComponent v-mo…

el-table中el-input的autofocus無法自動聚焦的解決方案

需求 有一個表格展示了一些進度信息&#xff0c;進度信息可以修改&#xff0c;需要點擊進度信息旁邊的編輯按鈕時&#xff0c;把進度變為輸入框且自動聚焦&#xff0c;當鼠標失去焦點時自動請求更新接口。 注&#xff1a;本例以vue2 element UI為例 分析 這個需求看著挺簡單…

用高斯濺射技術跨越機器人模擬與現實的鴻溝:SplatSim 框架解析

在機器人領域&#xff0c;讓機器人在現實世界中精準執行任務是大家一直追求的目標。可模擬環境和現實世界之間存在著不小的差距&#xff0c;特別是基于 RGB 圖像的操作策略&#xff0c;從模擬轉移到現實時總是狀況百出。 今天咱們就來聊聊 SplatSim 框架&#xff0c;看看它是怎…

【自然語言處理與大模型】如何知道自己部署的模型的最大并行訪問數呢?

當你自己在服務器上部署好一個模型后&#xff0c;使用場景會有兩種。第一種就是你自己去玩&#xff0c;結合自有的數據做RAG等等&#xff0c;這種情況下一般是不會考慮并發的問題。第二種是將部署好的服務給到別人來使用&#xff0c;這時候就必須知道我的服務到底支持多大的訪問…

[FPGA基礎] UART篇

Xilinx FPGA UART 硬件接口使用指南 1. 引言 UART (通用異步收發器) 是一種廣泛使用的串行通信接口&#xff0c;因其簡單、可靠和易于實現而成為 Xilinx FPGA 設計中的常見硬件接口。UART 用于在 FPGA 與外部設備&#xff08;如 PC、微控制器、傳感器等&#xff09;之間進行數…

【Netty4核心原理】【全系列文章目錄】

文章目錄 一、前言二、目錄 一、前言 本系列雖說本意是作為 《Netty4 核心原理》一書的讀書筆記&#xff0c;但在實際閱讀記錄過程中加入了大量個人閱讀的理解和內容&#xff0c;因此對書中內容存在大量刪改。 本系列內容基于 Netty 4.1.73.Final 版本&#xff0c;如下&#xf…

用 PyTorch 和numpy分別實現簡單的 CNN 二分類器

作業用到的知識&#xff1a; 1.Pytorch: 1. nn.Conv2d&#xff08;二維卷積層&#xff09; 作用&#xff1a; 對輸入的多通道二位數據&#xff08;如圖像&#xff09;進行特征提取&#xff0c;通過滑動卷積核計算局部區域的加權和&#xff0c;生成新的特征圖。 關鍵參數&a…

使用n8n構建自動化工作流:從數據庫查詢到郵件通知的使用指南

n8n是一款強大的開源工作流自動化工具&#xff0c;可以幫助你將各種服務和應用程序連接起來&#xff0c;創建復雜的自動化流程。下面我將詳細介紹一個實用的n8n用例&#xff1a;從MySQL數據庫查詢數據并發送郵件通知&#xff0c;包括使用場景、搭建步驟和節點部署方法。 使用場…

Vscode已經打開的python項目,如何使用已經建立的虛擬環境

在 VS Code 中使用已創建的 Conda/Mamba 虛擬環境 pe100&#xff0c;只需以下幾步&#xff1a; 步驟 1&#xff1a;確保虛擬環境已存在 在終端運行以下命令&#xff0c;檢查 pe100 環境是否已正確創建&#xff1a; conda activate pe100 python --version # 應顯示 Python 3…

Volatility工具學習

背景 VMware虛擬機系統hang死&#xff0c;手動重啟無法觸發系統panic&#xff0c;從而不能觸發kdump產生vmcore文件進行原因分析&#xff1b;此種情況下需要手動生成虛擬機內存快照&#xff0c;進而利用Volatility工具分析系統hang死的具體原因。 配置 使用VMware創建虛擬機…

學習筆記(C++篇)--- Day 4

目錄 1.賦值運算符重載 1.1 運算符重載 1.2 賦值運算符重載 1.3 日期類實現 1.賦值運算符重載 1.1 運算符重載 ①當運算符被用于類類型的對象時&#xff0c;C語言允許我們通過通過運算符重載的形式指定新的含義。C規定類類型對象使用運算符時&#xff0c;必須轉換成調用對…