zoukankan      html  css  js  c++  java
  • 数组和字符串-笔记

    一、集合,列表与数组

    集合:由一个或多个确定的元素构成的一个整体;
    集合特点:1.集合内的数据是无序的;2.集合内的数据类型不一定相同;
    列表:又称为线性列表,由数据项构成的有限序列,按照一定的线性顺序,排列而成的数据项集合;
    列表特点:1.列表中的数据类型可能不一致;2.列表是按照一定的线性顺序排列的;3长度是可变的;3.列表中的元素在内存中可能是相邻的,也有可能是不相邻的,如列表的另一种实现方式---链表,它的元素在内存中则不一定是连续的;
    列表在编程语言中的常见表现形式有数组和链表,栈和队列是两种特殊的链表。
    数组:数组是列表的一种特殊实现形式,数据存储是有序的,是通过索引来对数组进行访问(列表中没有索引),下表从0开始;
    数组特点:1.存储方式是有序的;2.用索引来标示数组中的内容,索引是从下表0开始;3.数组中的元素在内存中是连续的;4,每个数组中的元素占用内存相同;

    二、数组的操作

    1、读取元素
    (1)方式:访问索引(下标)来读取,索引一般从0开始。
    (2)过程:先在内存中为数组申请一段连续的空间,并且会记下索引为0处的内存地址,之后由记下的索引为0处内存地址 + 索引值 = 目标元素的地址,即找到目标元素。
    (3)时间复杂度:O(1)

    2、查找元素
    (1)过程:从数组开头逐步向后查找。如果数组中的某个元素为目标元素,则停止查找;否则继续搜索直到到达数组的末尾。
    (2)时间复杂度:O(N),N 为数组的长度。

    3、插入元素
    (1)末尾插入
    (2)首尾间插入用链表省时

    4、删除元素
    (1)删除掉数组中的某个元素后,数组中会留下空缺的位置,而数组中的元素在内存中是连续的,这就使得后面的元素需对该位置进行填补操作。
    (2)时间复杂度:O(N),N 为数组的长度。

    注:只考虑最坏情况的时间复杂度

  • 相关阅读:
    FluentValidation 验证框架笔记1
    AutoMapper 笔记1
    MediatR框架笔记1
    vscode调试python时提示无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方法
    Selenium使用自带浏览器自动化
    Selenium启动Chrome插件(Chrome Extensions)
    Gitee,Github 图片转直链
    CentOS 7.3 修改root密码 passwd: Authentication token manipulation error
    阿里云服务器 被入侵植入dhpcd导致cpu飙升100%问题
    Github 切换分支
  • 原文地址:https://www.cnblogs.com/jiangwg/p/15386374.html
Copyright © 2011-2022 走看看