算法之美-05-数组

news/2025/3/12 22:15:31/文章来源:https://www.cnblogs.com/linxiaoki/p/18768713

线性表-数组

引入的一个问题:数组为什么要从0开始编号,而不是从1开始?

答案:下标可以理解为偏移。计算地址的时候可以少一次减法运算。C语言设计者是这样想的,后面就延续下去了。

a[k]_address = base_address + k * type_size
a[k]_address = base_address + (k-1) * type_size

数组的概念:是一种线性表数据结构。用一组连续的内存空间,来存储一组具有相同类型的数据。

引申的概念:
包含关系=>
线性表:数组、链表、队列、栈。线性表的概念:线性表上的数据最多只有前和后两个方向。
非线性表:二叉树、树、堆。

优点:连续的内存空间+相同类型的数据:适合查找,根据下标查找的空间复杂度是O(1)。
缺点:低效的插入和删除。为了保证连续的内存空间,在插入和删除的时候,需要对部分连续的数据进行移动。

什么是容器:语言对数组的一种封装。例如在Java中的ArrayList。

  • 对数组的操作细节进行封装
  • 支持动态扩容(存储空间不够时,自动扩容1.5倍)
    tips:
  • 对于 ArrayList,事先指定数据的大小,可以省掉很多次内存申请和数据搬移操作。
  • 容器无法存储基本类型,比如 int、long,需要封装为Integer、Long类,所以需要装箱和拆箱,会有性能的损耗。如果在使用基本类型的时候,又比较关注性能,可以使用数组。
  • 多维数组,使用数组更加直观。

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

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

相关文章

SpringMVC 入门

SpringMVC开发步骤 添加依赖<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://mave…

20241123实验一《python程序设计》实验报告

标题“20241123 实验一《Python程序设计》实验报告” 实验报告模板如下: 20241123 2025.3.12 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2411 姓名: 胡钧涛 学号:20241123 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容 1.…

MySQL的limit优化2

一、底层原理 在 MySQL 8.0 中,当使用 LIMIT offset, count 进行分页查询时,如果 offset 非常大(例如 LIMIT 200000, 10),性能会显著下降。 这是因为 MySQL 需要扫描 offset + count 行数据,然后丢弃前 offset 行,只返回最后的 count 行 二、基本语法与功能LIMIT子句的基…

20242216 2024-2025-2 《Python程序设计》实验一报告

20242126 2024-2025-2 《Python程序设计》实验x报告 课程:《Python程序设计》 班级: 2421 姓名: 邹清楠 学号:20242126 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(第一次调试时的选…

今日总结(计网以及对Android Studio的进一步学习)

所花时间:130minutes 代码量(行):130 博客量:8 了解的知识点:今天学习了计网的信道复用技术以及对于前一节课的通信系统中涉及的计算问题的复习。 主要为码元与比特的关系,一个码元所携带的比特数 = 1og2x其中x为状态数,比如在计算 中会告诉你状态数,以及码元传输速率…

python公选实验一

20242113《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2421 姓名: 陈铂翔 学号:20242113 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并进行调试分…

20243303 实验一《python程序设计》实验报告

学号 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: XXXX 姓名: XXX 学号:XXX 实验教师:XXX 实验日期:2021年X月X日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并进行调试分析…

2024-2025-2 20244330《Python程序设计》实验一报告

2024-2025-2 20244330《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2443 姓名: 李馨逸 学号:20244330 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容 (1)熟悉Python开发环境; (2)进行Python运行、调试技能的学习与练习; (3)编…

吴恩达深度学习Part1

What is a Neural Network? Easily,Deep Learning is a more complex Neural Network. We can predict the house prices from the size.Based on it,We can fit a function to predict house prices.But you may find it is strange that the prices can not be negative.So…

字符编码:从基础到乱码解决

本文从常见编译错误入手,剖析字符编码问题。系统介绍现代字符编码五层模型,以“汉”字为例解析各层作用。阐述ASCII、GB2312、Unicode等常见编码标准,对比其特点与适用场景。解释输入与执行字符集概念,强调不一致导致的问题。通过代码示例分析控制台输出中文乱码原因,提出…

20241110 实验一《Python程序设计》实验报告

20241110 2024-2025-2 《Python程序设计》实验x报告 课程:《Python程序设计》 班级: 2411 姓名: 王方俊 学号:20241110 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 一、实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序…

20242125实验一《Python程序设计》实验报告

20242125 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2421 姓名: 单嘉怡 学号:20242125 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 一.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序…