【数据结构】-数组

数组

特点

数组的地址连续,可以通过下标获取数据。

1. 数组扩容

步骤:

$1. 创建一个比原来数组更长的新数组

$2. 让原来数组当中的数据依次复制到新数组当中

$3. 让arr指向新数组,原数组空间释放


 

 2. 数组插入


2.1 最后位置插入

$1. 判断数组当中有没有位置,用size记录当前数组的有效长度 ,看size和数组的长度是否相等,相等则需要扩容

$2. 在下标是size的位置插入数据

arr[size]=10   size++


2.2 任意位置插入

步骤:

$1. 判断插入位置是否合法   【0,size】

$2. 判断数组满没满,满了扩容

        eg. 在下标为3的位置插入数据

$3. 在下标为3及其之后的数据  , 从后往前依次向后移动, 避免数据被覆盖。

$4.  在目标位置插入新的数据   size++


2.3 有序数组插入

步骤:

$1. 判断数组满没满,满了扩容。

$2. 如果数组有效长度为0,直接arr[0] 插入数据

$3. 如果插入的为最大值:arr[size] 插入数据

$4. 找到第一个比插入的数据大的,记录该位置,将该位置及其之后的数据从后往前依次向后移动一位。  size++


3. 数组的删除

实质:

把数据覆盖掉,有效长度-1


3.1 指定位置删除

eg:删除下标为4的数据

步骤:

$1. 判断删除位置是否合法  【0,size-1】

$2. 删除位置之后的数据,从前往后  依次向前覆盖

$3. size--


3.2 删除第一个符合条件的数据

eg: 删除2

步骤:

$1. 首先找到要删除的数据,记录其所在的位置     下标为3

$2.  该位置之后的数据,从前往后依次向前覆盖

$3. size--  停止删除


3.3 删除所有符合条件的数据

eg: 删除2

步骤:

$1. 首先找到要删除的数据(从后往前遍历查找),记录其所在的位置  下标为3

$2. 该位置之后的数据,从前往后依次向前覆盖

$3. size--


4. 数组查找

二分查找法

1. left 和 right确定查找的范围  left<=right

2. mid=(left+right)/2

3. 目标值和下标为mid的值进行比较,如果相等,则找到了

                                                                如果不等,判断目标值和arr[mid] 之间的大小

                                                                目标值大:在右半部分再次进行查找  right不变  left=mid+1

                                                                目标值小,在左半部分再次查找  left不变,right=mid-1

直到找到或  left>right没有该元素,结束


5. 修改

让arr[1]=10

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

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

相关文章

智慧小区:科技之光点亮幸福家园

智慧社区的未来发展方向与趋势 从智能化管理到便捷化服务&#xff0c;从环保节能到安全监控&#xff0c;智慧社区正以其前瞻性的视野和创新性的技术&#xff0c;引领着未来城市生活的新方向。从智慧社区的基本概念中通过运用现代科技手段&#xff0c;如物联网、云计算、大数据…

0,国产FPGA(紫光同创)-新建PDS工程

国产FPGA正在蓬勃发展&#xff0c;紫光同创FPGA是大家竞赛时经常遇到的一款国产FPGA&#xff0c;本专栏从IP核开始一直到后续图像处理等。 开发板&#xff1a;盘古50K标准板 1&#xff0c;新建PDS工程 点击File&#xff08;1&#xff09;&#xff0c;然后是New Projects&#…

深入解析Sysmon日志:增强网络安全与威胁应对的关键一环

不断演进的网络安全领域中&#xff0c;保持对威胁的及时了解至关重要。Sysmon日志在这方面发挥了至关重要的作用&#xff0c;通过提供有价值的见解&#xff0c;使组织能够加强其安全姿态。Windows在企业环境中是主导的操作系统&#xff0c;因此深入了解Windows事件日志、它们的…

yocto 下基于SDK的 tcpdump 移植

系列文章目录 【1】yocto系统构建 【2】yocto下mosquitto用户名和密码配置 【3】yocto 下基于SDK的 tcpdump 移植 文章目录 系列文章目录前言一、移植tcpdump的意义二、移植步骤1. 准备Yocto环境2.获取源码&#xff0c;配置和编译3.移植到目标设备4.测试tcpdump 总结 前言 tc…

使用python提取日志里面的role_id、vip字段的值,(vip字段可能为空或者缺失,此时需要给默认值0):

日志样例&#xff1a; 1068 1529597015396 g60-database-380.i.nease.net /home/g60/gamedata/log/g60_GameStatistic_20180622.log 380_game02 G60_GameStatistic 1529596878_35 [2018-06-22 00:01:18][MercLevelUp],{"merc_capacity":2739,"cur_level"…

fastGpt

参考本地部署FastGPT使用在线大语言模型 1 rockylinx 1 ollama安装 在rockylinux中安装的&#xff0c;ollama由1.5G&#xff0c;还是比较大&#xff0c;所有采用在windows下下载&#xff0c;然后安装的方式&#xff0c;linux安装 tar -C /usr -xzf ollama-linux-amd64.tgz #…

记一次踩坑ConcurrentModificationException

这段代码中&#xff0c;oDo 是一个 List 类型的对象&#xff0c;subbedList 是从 oDo 中通过 subList(0, 3) 方法获取的子列表。subList 方法返回的是原列表 oDo 的一个视图&#xff0c;而不是一个独立的列表。这意味着对 subbedList 的任何修改都会反映到 oDo 上&#xff0c;反…

实时数据处理:技术支持和优势

在当今快节奏的数字世界中&#xff0c;企业不断寻找在竞争中保持领先地位的方法。批量和近实时的数据处理方法已经无法满足企业对于数据处理速度要求了。因此实时数据处理出现&#xff0c;逐渐帮助企业获取更快速的决策能力。本文&#xff0c;我们将深入研究实时处理&#xff0…

Django 5 增删改查 小练习

1. 用命令创建目录和框架 django-admin startproject myapp cd myapp py manage.py startapp app md templates md static md media 2. Ai 生成代码 一、app/models.py from django.db import modelsclass Product(models.Model):name models.CharField(max_length255, verb…

苏州金龙技术创新赋能旅游新质生产力

2024年10月23日&#xff0c;备受瞩目的“2024第六届旅游出行大会”在云南省丽江市正式开幕。作为客车行业新质生产力标杆客车&#xff0c;苏州金龙在大会期间现场展示了新V系V12商旅版、V11和V8E纯电车型&#xff0c;为旅游出行提供全新升级方案。 其中&#xff0c;全新15座V1…

Atlas800昇腾服务器(型号:3000)—SwinTransformer等NPU推理【图像分类】(九)

服务器配置如下&#xff1a; CPU/NPU&#xff1a;鲲鹏 CPU&#xff08;ARM64&#xff09;A300I pro推理卡 系统&#xff1a;Kylin V10 SP1【下载链接】【安装链接】 驱动与固件版本版本&#xff1a; Ascend-hdk-310p-npu-driver_23.0.1_linux-aarch64.run【下载链接】 Ascend-…

14. NSWindow 窗口与 NSWindowController 窗口控制器

NSWindowController窗口控制器主要用于管理xib/storyboard文件中加载的NSWindow对象&#xff1a;1、创建一个基于xib或storyboard的NSWindowController子类会自动创建一个NSWindow&#xff1b;2、如果手工创建NSWindow对象&#xff0c;则需要维护NSWindowController和NSWindow之…

02 什么是Babel

什么是Babel&#xff1f; Babel 是一个 JavaScript 编译器,提供了JavaScript的编译过程&#xff0c;能够将源代码转换为目标代码。AST -> Transform -> Generate 官网 Babel Babel 查看AST https://astexplorer.net/ Babel所有的包 babel/traverse Babel Babel 是…

【论文阅读笔记】VLP: A Survey on Vision-language Pre-training

目录 前言2 特征提取&#xff08;Feature extraction&#xff09;2.1.1 图象特征提取OD-based Region feature / RoIFreeze the pre-trained object detectorsGrid features&#xff08;网格特征&#xff09;CNN-GFsEnd-to-End Training&#xff08;端到端训练&#xff09;ViT-…

TortoiseSVN小乌龟下载安装(Windows11)

目录 TortoiseSVN 1.14.7工具下载安装 TortoiseSVN 1.14.7 工具 系统&#xff1a;Windows 11 下载 官网&#xff1a;https://tortoisesvn.subversion.org.cn/downloads.html如图选 TortoiseSVN 1.14.7 - 64 位 下载完成 安装 打开 next&#xff0c;next Browse&#xf…

Mac OS 搭建MySQL开发环境

Mac OS 搭建MySQL开发环境 文章目录 Mac OS 搭建MySQL开发环境一、安装Mysql&#xff1a;二、配置环境变量三、安装Navicat 本地环境&#xff1a; Mac OS Sequoia15.0.1&#xff08;M3 Max) 目标状态&#xff1a; 下载安装Mysql&#xff0c;配置相关环境。 一、安装Mysql&…

docker Desktop开启远程访问端口

文章目录 问题解决方法1.首先开启docker Desktop的访问端口2.将本地端口绑定远程访问ip 验证 问题 Windows上部署的docker&#xff0c;没办法通过远程的ip进行访问&#xff0c;实现远程代码的部署。 解决方法 1.首先开启docker Desktop的访问端口 通过开启docker访问端口&am…

Linux文件系统学习(未完)

1. Linux文件系统的特点与类别 1.1 特点 Linux系统中&#xff0c;文件组织在一个统一的树形目录结构中&#xff0c;整个文件系统有一个根“/”&#xff08;文件夹&#xff09;&#xff0c;然后以每个目录&#xff08;文件夹&#xff09;作为分叉&#xff0c;叶子节点作为文件…

Three.js 快速入门构建你的第一个 3D 应用

![ 开发领域&#xff1a;前端开发 | AI 应用 | Web3D | 元宇宙 技术栈&#xff1a;JavaScript、React、Three.js、WebGL、Go 经验经验&#xff1a;6年 前端开发经验&#xff0c;专注于图形渲染和AI技术 开源项目&#xff1a;github 晓智元宇宙、数字孪生引擎、前端面试题 大家好…

排序算法汇总

一、二分查找 public static int binarySearch(int[] nums,int target){int l 0, r nums.length-1;while(l < r){int mid l (r-l)/2;if(nums[mid] target){return mid;}else if(nums[mid] < target){r mid - 1;}else{l mid 1;}}return -1;} 对于防止溢出的 mid …