嵌入式Linux學習 - 數據結構6

五、哈希表

1. 哈希算法

將數據通過哈希算法映射成一個鍵值,存取都在同一位置實現數據的高效存儲和查找

將時間復雜度盡可能降低至O(1)

2. 哈希碰撞

多個數據通過哈希算法得到的鍵值相同,稱為產生哈希碰撞

3. 哈希表

構建哈希表存放0-100之間的數據

將0 - 100之間的數據的個位作為鍵值

4. 哈希表的相關操作

1. 插入元素

2. 遍歷輸出哈希表

3. 查找元素’

4. 銷毀哈希表

主函數:

結果:

六、排序和查找算法

建立和輸出被排序元素10000個

1. 冒泡排序

1.?時間復雜度為O(n^2)

2. 穩定的排序算法

3.?耗時:190 - 210ms

4. 運行原理:相鄰的兩個元素比較,大的向后走,小的向前走

2. 選擇排序

1.?時間復雜度為O(n^2)

2. 不穩定的排序算法

3.?耗時:120 - 130ms

4. 運行原理:從前到后找最小值與前面的元素交換

3. 插入排序

1.?時間復雜度為O(n^2)。若數組有序,時間復雜度降低至O(n)

2. 穩定的排序算法

3.?耗時:70ms - 80ms

4. 運行原理

將數組中的每個元素插入到有序數列中

先將要插入的元素取出

依次和前面元素比較,比元素大的向后走,直到前一個元素比要插入的元素小,或者到達有序數列開頭停止

最后插入被取出的元素

4. 希爾排序

1.?時間復雜度為O(nlogn)

2. 不穩定的排序算法

3.?耗時: 5 - 10ms

4. 運行原理

通過選擇不同的步長,將數組拆分成若干個小的數組實現插入排序

若干個小的數組稱為有序數列后,使得數組中的數據大致有序

最后再對整體完成一個插入排序

5. 快速排序

1.?時間復雜度為O(nlogn)

2. 不穩定的排序算法

3.?耗時:4 - 10ms

4. 運行原理

選擇左邊的作為鍵值,從后面找一個比鍵值小的放前面,從前面找一個比鍵值大的放后面

左右兩邊有元素則遞歸調用快速排序

??

6. 折半查找 -- 二分查找

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

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

相關文章

GitHub 趨勢日報 (2025年08月07日)

📊 由 TrendForge 系統生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日報中的項目描述已自動翻譯為中文 📈 今日獲星趨勢圖 今日獲星趨勢圖1894nautilus_trader354stagehand315openai-cookbook263sim242ollama230prisma154v…

android 使用openimagelib OpenImage 實現點擊放大圖片,瀏覽

在 Android 中使用 OpenImageLib(假設這是一個開源圖片加載庫,類似于 Glide 或 Picasso)實現 點擊放大圖片并瀏覽 的功能,通常需要結合 圖片查看器庫(如 PhotoView)和 圖片加載庫(如 OpenImageLib)。以下是完整的實現方案: 1. 添加依賴 (1) 添加 OpenImageLib 依賴 …

計算機視覺CS231n學習(4)

深度學習軟件 (這一部分去看tensorflow和pytorch的筆記) (見專欄)tensorflow和pytorch區別 tensorflow,我們先構建顯示的圖,然后重復運行它 pytorch,我們每次做前向傳播時,都構建一個…

【具身智能】具身智能的革命——人形機器人如何重塑人類日常生活

還在為高昂的AI開發成本發愁?這本書教你如何在個人電腦上引爆DeepSeek的澎湃算力! 2025年被譽為具身智能的元年,人形機器人技術迅猛發展,將深刻改變人類生活方式。本文從具身智能的核心概念入手,探討人形機器人的硬件架構、感知系統、運動控制和決策算法等技術基礎。結合…

Jira Service Management企業服務管理:IT、HR、法務、財務等部門如何落地現代企業服務管理理念與實踐

Jira Service Management 服務管理方法Jira Service Management 服務管理方法將開發、IT運營和業務團隊整合至一個統一平臺,以實現更高效的協作。任何團隊都能夠快速響應業務變化,為客戶和員工提供卓越體驗。Jira Service Management 提供直觀、經濟高效…

軟件開發 - danger 與 dangerous、warn 與 warning

danger 與 dangerous 1、danger詞性:n.含義:指可能造成傷害或損失的情況或事物# 例詞in 【danger】(處于危險中) out of 【danger】(脫離危險)# 例句After the surgery, the doctor said the patient was o…

為何毫米波需要采用不同的DPD方法?如何量化其值?

摘要 在5G新無線電技術標準中,除了sub-6 GHz頻率外,還利用毫米波(mmWave)頻率來提高吞吐量。毫米波頻率的使用為大幅提高數據吞吐量帶來了獨特的機會,同時也帶來了新的實施挑戰。本文探討sub-6 GHz和毫米波基站無線電之間的架構差異&#xff…

【數據結構入門】棧和隊列的OJ題

目錄 1. 有效的括號 分析: 代碼: 2. 用隊列實現棧 分析: 代碼: 3. 用棧實現隊列 分析: 代碼: 4. 設計循環隊列 思路: 代碼: 定義循環隊列結構體: 初始化結…

#Datawhale AI夏令營#第三期全球AI攻防挑戰賽(AIGC技術-圖像方向)

本次題目來源于Datawhale AI夏令營第三期全球AI攻防挑戰賽圖像生成賽道。首先看一下賽題背景和要求。1.賽題相關大賽背景隨著大模型(Deepseek、GPT、LLaMA等)的爆發式應用,AI技術已深度融入金融、醫療、智能終端語音交互場等核心領域&#xf…

Compose筆記(四十二)--RangeSlider

這一節主要了解一下Compose中的RangeSlider,在Jetpack Compose中,RangeSlider是Material3庫提供的雙滑塊范圍選擇控件,用于在一個連續區間內選擇最小值和最大值。它能直觀地設置一個區間范圍,廣泛應用于篩選、過濾等場景,簡單總結…

window10本地運行datax與datax-web

搭建 dataX 前置條件 JDK(1.8以上,推薦1.8)Python(2或3都可以)Apache Maven 3.x (Compile DataX) 下載 datax 編譯好的包 https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz 進入目錄,使用 powershell 打開 執行解壓命令…

PDF注釋的加載和保存的實現

PDF注釋功能文檔 概述 本文檔詳細說明了PDF注釋功能的實現,包括注釋的加載和保存功能。該功能基于Android PDFBox庫實現,支持Ink類型注釋的讀取和寫入。 功能模塊 1. 注釋加載功能 (getAnnotation()) 功能描述 從PDF文件中加載已存在的注釋,并…

Linux環境下實現簡單TCP通信(c)

具體代碼實現 server.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h>#define PORT 8080 #define BUFFER_SIZE 1024void handle_client(int client_s…

炫酷圓形按鈕調色器

<!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>圓形按鈕顏色控制器</title><style>bod…

Vue 3 的編譯時優化如何改寫 DOM 操作規則

在現代前端開發中&#xff0c;框架級優化正悄然改變我們處理性能瓶頸的方式。與手動優化策略不同&#xff0c;Vue 3 的編譯器在構建階段就完成了關鍵性能改造&#xff0c;為 DOM 操作效率帶來質的飛躍。一、虛擬DOM的隱藏成本虛擬DOM&#xff08;Virtual DOM&#xff09;通過內…

Angular初學者入門第二課——.ts、.d.ts、.state.ts的區別(精品)

初次接觸 Angular 實際項目時&#xff0c;發現里邊有很多不同后綴的文件&#xff0c;雖然沒深入研究過&#xff0c;但根據其他編程語言的經驗猜測這應該是通過后綴名來區分文件的作用。后來有時間研究了一下具體的細節和不同點&#xff0c;就有了今天這篇文章&#xff0c;這些知…

進程狀態+進程優先級+進程上下文切換解讀

一、進程狀態 什么是進程狀態&#xff1f;進程狀態指的是在操作系統中進程在生命周期中所處的不同階段。進程狀態有哪些呢&#xff1f;我們可以看到上述圖片 進程狀態分為&#xff1a;創建狀態、就緒狀態、運行狀態、阻塞狀態和終止狀態所有的操作系統在實現進程狀態變化的時候…

Android 原生與 Flutter 通信完整實現 (Kotlin 版)

1. 項目配置 pubspec.yaml 添加依賴 dependencies:flutter:sdk: flutterprovider: ^6.0.52. Flutter 端實現 狀態管理類 // settings_provider.dart import package:flutter/foundation.dart;class SettingsProvider with ChangeNotifier {String _themeColor blue;bool _dark…

數字圖像處理3

圖像線性濾波——目的就是濾去噪聲&#xff0c;但是邊緣會模糊&#xff0c;整體也模糊線性&#xff1a;鄰域平均法&#xff08;4鄰域平均和8鄰域平均&#xff09;用當前運算點所在鄰域的平均值來代替該點的平均值im_for_read"D:\AAAproject\PYproject\EXPERuse\zaosheng.j…

Linux發行版分類與Centos替代品

讓centos7氣的不輕&#xff0c;這玩意兒太老了&#xff0c;什么都不好配置。 目錄Linux 發行版的大致分類1. Red Hat 系列&#xff08;RPM 系&#xff09;2. Debian 系列&#xff08;DEB 系&#xff09;3. Arch 系列4. SUSE 系列CentOS 7 的替代品推薦AlmaLinux 和 Rocky Linux…