当前位置: 首页 > wzjs >正文

dedecms精仿学校网站模板青岛网络seo公司

dedecms精仿学校网站模板,青岛网络seo公司,沈阳男科三级甲医院排名,wordpress客户管理系统数组(Array) 数组是最基础的数据结构,在内存中连续存储,支持随机访问。适用于需要频繁按索引访问元素的场景。 简介 数组是一种线性结构,将相同类型的元素存储在连续的内存空间中。每个元素通过其索引值(数…

数组(Array)

数组是最基础的数据结构,在内存中连续存储,支持随机访问。适用于需要频繁按索引访问元素的场景。


简介

数组是一种线性结构,将相同类型的元素存储在连续的内存空间中。每个元素通过其索引值(数组下标 index)来进行唯一标识和访问。

画板

核心特性

  1. 固定大小:在绝大多数语言中,数组创建后大小固定不变
  2. 连续内存:元素在内存中顺序存储,无额外开销
  3. 随机访问:O(1)时间复杂度直接访问任意元素
  4. 同质性:同意数组中所有元素类型相同
  5. 索引访问:通过数字索引访问元素

基本操作

时间复杂度分析
操作时间复杂度
访问O(1)
更新O(1)
遍历O(n)
搜索无序数组O(n);有序数组O(log n)(二分查找)
插入/删除在末尾O(1);在数组指定位置O(n)(需要移动元素)
代码实现
// 声明和初始化
int[] numbers = new int[5];  // 创建一个长度为5的int数组,默认值都是0
int[] primes = {1, 9, 78, 25, 3};  // 直接使用初始值创建数组// 访问元素
int firstPrime = primes[0];  // 得到1// 更新元素
numbers[0] = 10;// 获取数组长度
int length = numbers.length;// 遍历数组
for (int i = 0; i < primes.length; i++) {System.out.println(primes[i]);
}// 使用增强for循环遍历
for (int prime : primes) {System.out.println(prime);
}/* 随机访问元素 */
int randomAccess(int[] nums) {// 在区间 [0, nums.length) 中随机抽取一个数字int randomIndex = ThreadLocalRandom.current().nextInt(0, nums.length);// 获取并返回随机元素int randomNum = nums[randomIndex];return randomNum;
}

优缺点

优点
  • 空间效率高:数组为数据分配了连续的内存块,无需额外的结构开销
  • 支持随机访问:数组允许在 O(1) 时间内访问任意元素
  • 缓存局部性:当访问数组元素时,计算机不仅会加载该数组,还会缓存其周围的其他数据,从而借助高速缓存来提升后续操作的执行速度
缺点
  • 插入与删除效率低:当数组中的元素较多时,插入/删除元素都得移动大量的元素
  • 长度不可变:数组在初始化后长度就固定了,扩容数组需要将原数组所有数据复制到新数组,开销很大
  • 空间浪费:如果数组空间分配大小超过了实际所需,多余空间容易浪费

应用场景

  • 随机访问:如果需要随机抽取一些样本,可以用数组存储,并生成一个随机序列,根据索引实现随机抽样
  • 排序和搜索:数组是排序和搜索算法中常用的数据结构。快速排序、归并排序、二分查找等都主要在数组上进行
  • 查找表:当需要快速查找一个元素或其对应关系时,可以使用数组作为查找表。如实现字符到 ascii 码的映射,可以将字符的 ascii 值作为索引,对应元素存放在数组中对应位置
  • 机器学习:神经网络中使用了大量的向量、矩阵、张量之间的线性代数运算,这些数据都是以数组的形式构建的。数组是神经网络编程中最常用的数据结构
  • 数据结构实现:数组可以用于实现栈、队列、哈希表、堆、图等数据结构

扩展

  • 二维数组
  • 多维数组

热门题目

  • 53. 最大子数组和
  • 11. 盛最多水的容器
  • 283. 移动零
  • 88. 合并两个有序数组
53. 最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组是数组中的一个连续部分。

示例:

输入:nums = [-2,1,-3,4,-1,2,1,-5,4]

输出:6

解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

题解

动态规划

分而治之,避免重复计算

  1. 初始化
    1. maxSum 设置为数组第一个元素
    2. currentSum 也设置为第一个元素(子数组最少包含一个元素)
  2. 遍历数组
    1. 从第二个元素开始遍历
    2. 对于每个元素 nums[i],有两种选择:
      1. 将其加入到之前的子数组,即 currentSum + nums[i]
      2. 重新开始一个子数组,只包含当前元素,即 nums[i]
    3. 选择最大的作为新的 currentSum
    4. 最后,更新 maxSum,保证其是currentSummaxSum中最大的值
class Solution {public int maxSubArray(int[] nums) {int maxSum = nums[0];int currentSum = nums[0];for(int i = 1; i < nums.length; i++) {// 是将当前元素加入到之前的子数组,还是重新开始一个子数组currentSum = Math.max(currentSum + nums[i], nums[i]);// 更新最大子数组和maxSum = Math.max(currentSum, maxSum);}return maxSum;}
}

参考资料

[1] Hello 算法
[2] 算法导航

http://www.dtcms.com/wzjs/516693.html

相关文章:

  • 手机网站案例 鸿学校招生网络营销方案
  • 建材销售网站手机模板seo需要会什么
  • 企业网站备案要钱吗客户营销
  • 横岗做网站广告推广代运营公司
  • 网站做等保是按照什么定级别的百度seo快速排名
  • 网站建设默认字体aso榜单优化
  • 网站服务器设置全球搜钻是什么公司
  • 王野甲壳虫北京seo关键词优化外包
  • 网络服装网站建设sem是什么设备
  • 自己建网站步骤百度sem优化师
  • 淘宝手机网站模板下载安装什么是营销渠道
  • 帮别人做网站进了看守所市场调研报告模板
  • 网站路径改版如何做301重定向外包接单平台
  • 宜昌疫情最新消息西陵区seo搜索引擎优化哪家好
  • 教务系统网站怎么做个人网站制作流程
  • 金昌做网站外贸seo
  • 家具家居网站建设东莞关键词优化平台
  • wordpress保存文件百度seo公司哪家最好
  • 德国服务器网站百度公司总部在哪里
  • 培训 网站 模板联盟营销平台
  • 怎么制作网站源码seo网页的基础知识
  • 济南专业网站设计公司广州网络推广哪家好
  • 大学生做网站网站建设公司排行榜
  • 怎么做网站浮动模块下载百度app最新版
  • 自己做的网站还要买域名么怎样自己做网站
  • 网站特色怎么搭建网站
  • 中国建设工程招投网站软文发布平台排名
  • qq推广引流网站网站推广模式
  • 瑞丽航空公司官方网站比较好网站制作公司
  • 电子商务网站设计怎么做网站营销网