嵌入式开发学习———Linux环境下数据结构学习(五)

折半查找(二分查找)

适用于已排序的数组,通过不断缩小查找范围定位目标值。

int binarySearch(int arr[], int size, int target) {int left = 0, right = size - 1;while (left <= right) {int mid = left + (right - left) / 2;if (arr[mid] == target) return mid;if (arr[mid] < target) left = mid + 1;else right = mid - 1;}return -1; // 未找到
}

插入排序

将未排序元素逐个插入已排序部分的正确位置。

void insertionSort(int arr[], int size) {for (int i = 1; i < size; i++) {int key = arr[i], j = i - 1;while (j >= 0 && arr[j] > key) {arr[j + 1] = arr[j];j--;}arr[j + 1] = key;}
}

快速排序

通过分治策略选取基准值,将数组分为左右两部分递归排序。

void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}int partition(int arr[], int low, int high) {int pivot = arr[high];int i = low - 1;for (int j = low; j < high; j++) {if (arr[j] < pivot) {i++;swap(&arr[i], &arr[j]);}}swap(&arr[i + 1], &arr[high]);return i + 1;
}void quickSort(int arr[], int low, int high) {if (low < high) {int pi = partition(arr, low, high);quickSort(arr, low, pi - 1);quickSort(arr, pi + 1, high);}
}

关键点

  • 折半查找要求数组有序,时间复杂度为 O(log n)。
  • 插入排序适合小规模数据,时间复杂度为 O(n²)。
  • 快速排序平均时间复杂度为 O(n log n),需注意基准值选择。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91924.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91924.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(一)React +Ts(vite创建项目/useState/Props/Interface)

文章目录 项目地址 一、React基础 1.1 vite创建 1. 创建项目 2. 安装项目所需环境 1.2 jsx 1. 三元表达式 1.3 基础 1. 创建第一个组件 2. 安装boostrap 3. 插件常用命令 4. map 二、组件 2.1 useState 1. useState 2. 使用 3.更新对象 4. 更新数组(增,删,改) 5. 使用immer…

网关和BFF是如何演化的

BFF&#xff08;Backend For Frontend&#xff09;:对返回的数据结构进行聚合、裁剪、透传等适配逻辑。 适用于API网关之后的数据聚合、裁剪与透传简化客户端逻辑&#xff0c;减少网络开销敏感数据过滤 BFF逻辑层 架构没有最好&#xff0c;要看是否满足当前的业务场景。 业务的…

SQL中的WITH语句(公共表表达式CTE)解释

SQL中的WITH语句&#xff08;公共表表达式CTE&#xff09; WITH语句&#xff0c;也称为公共表表达式&#xff08;Common Table Expression&#xff0c;CTE&#xff09;&#xff0c;是SQL中一种强大的功能&#xff0c;它允许你创建临时结果集&#xff0c;这些结果集可以在后续的…

服务器地域选择指南:深度分析北京/上海/广州节点对网站速度的影响

更多云服务器知识&#xff0c;尽在hostol.com你准备开一个覆盖全国的线上零食店&#xff0c;现在万事俱备&#xff0c;只差一个核心问题没解决&#xff1a;你唯一的那个总仓库&#xff0c;应该建在哪里&#xff1f;是建在哈尔滨&#xff0c;让南方的朋友下单后&#xff0c;一包…

桶排序-Java实现

桶排序是一种分配式排序算法&#xff0c;将元素分到有限数量的桶里&#xff0c;每个桶再单独排序&#xff08;比如用插入排序&#xff09;&#xff0c;最后依次把各个桶中的元素取出来即完成排序。 时间复杂度&#xff1a;最佳 O(n) | 平均 O(n n/k k) | 最差 O(n) 空间复杂…

oracle知识

这里写自定义目录标题Oracle常用的数据类型&#xff1a;Oracle实操&#xff1a;创建数据表Oracle约束建表的时候设置约束&#xff1a;表创建后添加添加约束&#xff1a;Oracle常用的数据类型&#xff1a; Oracle实操&#xff1a;创建数据表 Oracle约束 建表的时候设置约束&…

超级人工智能+无人机操控系统,振兴乡村经济的加速器,(申请专利应用),严禁抄袭!

无人机边缘智能系统&#xff1a;山林珍稀资源探测的完整架构与实战指南本人设计的多模态边缘AI系统已在秦岭山区完成实地验证&#xff0c;对7种高价值食用菌识别准确率达94.3%&#xff0c;定位误差小于0.8米一、前沿技术融合的商业化机遇根据Gartner 2025年技术成熟度曲线分析&…

用腾讯地图写一个逆地址解析(很详细)

首先说明以下代码适合有前端基础知识的同学。以下是css和html部分<!DOCTYPE html><html lang"zh-CN"><!-- lang是用来申明语言类型&#xff0c;这里申明为中文&#xff08;zh&#xff09;中国大陆&#xff08;CN&#xff09;补充中文繁体为zh-TW --&g…

在 Vue3+Vite+TypeScript 项目中使用 svg 文件并支持自定义样式

参考文档&#xff1a;vite-svg-loader 安装与配置 安装插件 pnpm add vite-svg-loader -D配置 // vite.config.ts import svgLoader from vite-svg-loaderexport default defineConfig({plugins: [vue(),svgLoader({defaultImport: component})] })使用 <script setup …

ShimetaPi M4-R1:国产高性能嵌入式平台的异构计算架构与OpenHarmony生态实践

在全球化芯片供应链波动及树莓派等硬件持续涨价的背景下&#xff0c;ShimetaPi M4-R1 作为全栈国产化嵌入式开发平台&#xff0c;以 高性能异构计算架构 和 开源鸿蒙原生支持 为核心突破点&#xff0c;填补了中高端边缘设备开发的国产方案空白。其基于瑞芯微 RK3568B2 的硬件设…

zookeeper分布式锁 -- 读锁和写锁实现方式

读锁和写锁读锁: 是共享锁,读锁与读锁是可以兼容的,所以同时有多个请求都可以持有写锁: 是独占锁,写锁与任何锁都互斥,所以只有一个请求持有,这个请求释放写锁其他请求才能持有一旦持有写锁,说明数据在发送变化就不能读了,自然一个请求就不能出现读锁和写锁共存的情况总结: 读锁…

第二篇:Linux 文件系统操作:从基础到进阶

目录 一、文件与目录管理基础 创建文件 创建目录 目录结构查看 二、链接文件深入理解 创建软链接 创建硬链接 核心区别对比 三、文件压缩与解压缩全攻略 1、压缩命令对比 2、解压缩命令 3、三种压缩方式性能对比 4、通用解压技巧 四、文件查找与搜索 1、按文件名…

哔哩哔哩招游戏内容产品运营

游戏内容产品运营【2026届】&#xff08;岗位信息已获jobleap.cn授权转发到csdn&#xff09;哔哩哔哩集团 上海收录时间&#xff1a; 2025年08月01日职位描述1、负责研究B站游戏创作者的创作过程、动机及遇到的问题&#xff0c;产出研究报告&#xff1b; 2、结合用研分析和相关…

谈谈Flutter中的Key

目录 前言 一、什么是Key 1.StatelessWidget 2.StatefulWidget 3.加入Key后的效果 二、什么时候应该使用 Key&#xff1f; 1.Flutter判断widget的逻辑 1.Flutter判断组件身份的规则 1.Widget的类型&#xff08;runtimeType&#xff09;相同 2. Key相同&#xff08;ke…

重生之我在暑假学习微服务第八天《OpenFeign篇》

个人主页&#xff1a;VON文章所属专栏&#xff1a;微服务 微服务系列文章 重生之我在暑假学习微服务第一天《MybatisPlus-上篇》重生之我在暑假学习微服务第二天《MybatisPlus-下篇》重生之我在暑假学习微服务第三天《Docker-上篇》重生之我在暑假学习微服务第四天《Docker-下篇…

风光储综合能源系统双层优化规划设计【MATLAB模型实现】

本模型基于双层优化框架&#xff0c;利用KKT条件、大M法、对偶理论求解&#xff0c;专注于综合能源系统&#xff08;微电网&#xff09;多电源容量优化配置的模型介绍。代码采用CPLEX求解器&#xff0c;注释详尽&#xff0c;非常适合新手学习该类问题的建模与求解思路。 模型总…

雪花算法重复id问题

原理解析 雪花算法实现简单、适配性强&#xff0c;无论是电商订单、日志追踪还是分布式存储&#xff0c;都能满足 “唯一、有序、高效、可扩展” 的核心需求&#xff0c;因此成为分布式ID主流选择。雪花算法生成的ID是一个64位的整数&#xff0c;由多段不同意义的数字拼接而成&…

MQTT 入门教程:三步从 Docker 部署到 Java 客户端实现

在物联网&#xff08;IoT&#xff09;与边缘计算快速发展的今天&#xff0c;设备间的高效通信成为核心需求。MQTT 作为一种轻量级的发布 / 订阅模式协议&#xff0c;凭借其低带宽占用、强稳定性和灵活的消息路由能力&#xff0c;已成为物联网通信的事实标准。无论是智能家居的设…

公网服务器上Nginx或者Openresty如何屏蔽IP直接扫描

0x01 背景云服务器很多时候为了通信需要设置公网访问&#xff0c;但是网络当中存在很多的扫描器&#xff0c;无时无刻在扫描&#xff0c;当80,443端口暴露时&#xff0c;成了这些扫描IP的攻击对象&#xff0c;无时无刻收到威胁。0x02 扫描攻击方式1.直接通过公网IP地址进行一些…

C语言(长期更新)第8讲 函数递归

C语言&#xff08;长期更新&#xff09; 第8讲:函数递归 跟着潼心走&#xff0c;轻松拿捏C语言&#xff0c;困惑通通走&#xff0c;一去不回头~欢迎开始今天的学习内容&#xff0c;你的支持就是博主最大的动力。 目录 C语言&#xff08;长期更新&#xff09; 第8讲 函数递归…