zoukankan      html  css  js  c++  java
  • 数据结构之顺序表

    顺序表

    在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录他们,传进传出函数等。一组数据中包含的元素个数可能发生变化(可以增加或删除元素)对于这种需求,最简单的解决方案是将这样一个元素看成一个序列,用元素在序列里的位置和顺序,表示实际应用中的某种有意义的信息,或者表示数据之间的某种信息。这样一组序列元素的组织形式,我们可以将其抽象成线性表。一个线性表是某类元素的一个集合,还记录着元素之间的一种顺序关系。

    实际存储方式

    1.  顺序表: 将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示

    2. 链表: 将元素存放在通过链接构造起来的一系列存储块中

    顺序表结构

    两种实现方式

    一体式与分离式结构

    顺序表添加删除元素

    # 插入
    # 1. 在尾部插入元素 时间复杂度O(1)
    # 2. 非保序(不常见),时间复杂度O(1)
    # 3.保存元素插入,时间复杂度O(n)
    
    
    #删除元素
    # 1.删除队尾,时间复杂度O(1)
    # 2.非保序(不常见),时间复杂度O(1)  例如:拿最后一个填充
    # 2.保序,时间复杂度O(n)
    # Python中的顺序表list和tuple 两种类型采用了顺序表实现。

    # tuple是不可表类型,即不变的顺序表

    # list:分离式存储,动态顺序表

    #元素外置,不同类型数据
    
    # 一体式,分离式 存储区扩充
    # 一体式:数据区内存不足,重新申请内存空间,表头,数据搬迁。旧顺序表销毁
    # 新的表头,顺序表地址改变
    
    # 分离式:
    # 更改表头指向,指向新的内存空间,表头没变

    元素存储区替换

    # 内存扩充时,策略
    # 1. 每次扩充固定数目,如每次扩充增加10个元素未知,这种策略可称为线性增长
    # 特点:节约空间,但是扩充频繁,操作次数多
    # 2. 每次扩充翻倍,如每次扩充一倍的存储空间
    # 特点:减少了扩充的执行的次数,但可能会耗费资源。以空间换时间,推荐的方式。

    Python中的顺序表

  • 相关阅读:
    ubuntu 防止软件包自动更新
    记录一个开头带有&#x的特征数据的解码
    从一次失败的微信小程序抓包、反编译经历中学习反思
    Python爬虫处理奇葩的请求参数payload
    python爬虫
    python爬虫处理在线预览的pdf文档
    python高级—— 从趟过的坑中聊聊爬虫、反爬、反反爬,附送一套高级爬虫试题
    djangorestframework+vue-cli+axios,为axios添加token作为headers踩坑记
    django 问题综合
    vue(9)—— 组件化开发
  • 原文地址:https://www.cnblogs.com/donghaoblogs/p/10539590.html
Copyright © 2011-2022 走看看