数据结构——数组

这篇具有很好参考价值的文章主要介绍了数据结构——数组。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数组

数据结构的基本类型之一,它可以构成其他数据结构,如栈、队列、哈希表、树、图、堆、矩阵、张量。
数组在内存中的存储方式为一片连续的内存空间,其基本操作与其他数据结构一致,即所谓的增删改查。废话不多说,上代码加以理解。

Java类型实现

class array {

  public static void main(String[] args) {    

      // 初始化数组
      Scanner in = new Scanner(System.in);
      int[] arr = new int [5];
      int[] nums = {1,3,2,5,4};

      System.out.println("访问的随机元素是:"+randomAccess(nums));


      System.out.print("输入要插入的索引和元素:");
      int index = in.nextInt();
      int n = in.nextInt();
      insert(nums,n,index);
      System.out.println("现在的nums数组为:");
      for (int i = 0; i < nums.length; i++) {
          System.out.print(nums[i]);
      }
      System.out.println();

      System.out.print("输入要删除的索引和元素:");
      index = in.nextInt();
      n = in.nextInt();
      delete(nums,n,index);
      System.out.println("现在的nums数组为:");
      for (int i = 0; i < nums.length; i++) {
          System.out.print(nums[i]);
      }
     // foreach遍历方式
     // for (int num: nums) {
     //   System.out.println(num);
     // }
      System.out.println();

      //查找元素
      System.out.println("请输入要查找的元素:");
      n = in.nextInt();
      System.out.println("查找的元素的下标为:"+find(nums,n));

      //扩展数组
      System.out.println("请输入扩展的大小:");
      n = in.nextInt();
      int[] a = extend(nums,n);
      System.out.println("新数组为:");
      for (int b:a) {
          System.out.print(b);
      }

  }
  //访问元素,在数组中随机抽取一个数
  public static int randomAccess(int[] nums){
      int randomIndex = ThreadLocalRandom.current().nextInt(0, nums.length);
      int randomNum = nums[randomIndex];
      return randomNum;
  }

  //插入元素
  public static void insert(int[] nums,int num,int index){
      for (int i = nums.length-1; i > index ; i--) {
          nums[i] = nums[i-1];
      }
      nums[index] = num;
  }

  //删除元素
  public static void delete(int[] nums,int num,int index){
      if (index == nums.length-1){
          nums[index] = 0;
          return ;
      }
      for (int i = index; i < nums.length - 1; i++) {
          nums[i] = nums[i+1];
      }
  }

  //查找元素,返回索引
  public static int find(int[] nums,int num){
      for (int i = 0 ; i < nums.length ; i++ ) {
          if (nums[i] == num) {
              return  i;
          }
      }
      return -1;
  }

  //扩展数组:思路——新建一个更大的数组,将原数组复制到新数组中
  public static int[] extend(int[] nums,int enlarge){
      int[] newArr = new int[nums.length+enlarge];
      for (int i = 0; i < nums.length; i++) {
          newArr[i] = nums[i];
      }
      return newArr;
  }
}

数组的优点与局限性:

    ·空间效率高:数组为数据分配了连续的内存块,无需额外的结构开销
    ·支持随机访问:允许在O(1)时间内访问任何元素
    ·缓存局部性:当访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓存来提升后续操作的执行速度

连续空间存储的局限性:

    ·插入与删除效率低:但数据量大时,该操作会移动大量数据
    ·长度不可变:数组在初始化后长度就固定了,扩容数组需要将所有数据复制到新数组,开销很大
    ·空间浪费:如果数组分配的空间大小超过实际所需,那么多余的空间就被浪费了

数组典型应用:

·随机访问
·排序和搜索
·查找表
·机器学习
·数据结构实现

本篇内容参考自Github krahets的hello算法,将其内容进行归纳整理

文章来源地址https://www.toymoban.com/news/detail-825277.html

到了这里,关于数据结构——数组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【算法基础】java基础——基本结构、数据类型、表达式、语句

    Java程序的基本结构:         一段Java程序或者一个静态库,会用到下面7种语法         1、原始数据类型:在计算机程序中精确到定义整数、浮点数、布尔值等         2、语句:通过创建变量并对其赋值,它们能够被组合为类似数学公式定义的表达式         3、数组  

    2024年01月16日
    浏览(13)
  • 【100天精通python】Day6:python基础_基本数据结构,常用序列类型和运算符

    目录 目录 1 常用的序列类型 1.1 字符串(String)  1.2 列表(List) 1.3 元组 (Tuple)

    2024年02月14日
    浏览(14)
  • 用C语言实现一个学生信息管理系统,学生基本信息包括学号、姓名、三门课成绩以及个人平均成绩,有不超过70个学生的数据,要求能够建立学生基本信息(结构体数组)、按学号查询学生基本信息、计算学生个人平均成绩...

    下面是一种使用 C 语言实现学生信息管理系统的方案: 首先,定义结构体存储学生的基本信息,其中包括学号、姓名、三门课成绩和平均成绩。例如: 然后,定义结构体数组来存储最多70个学生的信息。 接下来,可以编写函数来实现各种功能。例如,可以定义函数来建立学

    2024年02月03日
    浏览(15)
  • 数据结构——线性数据结构(数组,链表,栈,队列)

    数据结构——线性数据结构(数组,链表,栈,队列)

    数组(Array) 是一种很常见的数据结构。它由相同类型的元素(element)组成,并且是使用一块连续的内存来存储。 我们直接可以利用元素的索引(index)可以计算出该元素对应的存储地址。 数组的特点是: 提供随机访问 并且容量有限。 2.1. 链表简介 链表(LinkedList) 虽然是

    2024年02月11日
    浏览(14)
  • 【算法 & 高级数据结构】树状数组:一种高效的数据结构(二)

    【算法 & 高级数据结构】树状数组:一种高效的数据结构(二)

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :算法题、 基础算法、数据结构~赶紧来学算法吧 💡 往期推荐 : 【算法基础 数学】快速幂求逆元(逆元、扩展欧几里得定理、小费马定理) 【算法基础】深搜 数据结构各内部排序算法总结对比及动图演示(插入排序

    2024年03月26日
    浏览(12)
  • 【算法 & 高级数据结构】树状数组:一种高效的数据结构(一)

    【算法 & 高级数据结构】树状数组:一种高效的数据结构(一)

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :算法题、 基础算法~赶紧来学算法吧 💡 往期推荐 : 【算法基础 数学】快速幂求逆元(逆元、扩展欧几里得定理、小费马定理) 【算法基础】深搜 树状数组 (Binary Indexed Tree,BIT)是一种数据结构,用于高效地处理

    2024年03月11日
    浏览(19)
  • 线性数据结构:数组、受限数组(栈、队列)、线性表

    线性数据结构:数组、受限数组(栈、队列)、线性表

      数组(Array)是有序的元素序列。属于线性结构(有且仅有一个前驱、有且仅有一个后继)。   数组的关键在于在内存中的物理地址对应的是 一段连续的内存 。这意味着如果想要在任意位置删除/新增一个元素,那么该位置往后的所有元素,都需要往前挪/往后挪一个位

    2024年03月09日
    浏览(15)
  • 数据结构(数组)

    数据结构(数组)

        1. 数组定义         数组(Array)是一种线性结构。它用一组连续的内存空间,来存储一组具有相同数据类型的数据。    2. 数组的特点         ①用来存储一组类型相同的数据。         ②在内存中,分配连续的空间,数组创建时需要指定容量。因为数组为了保持

    2024年01月25日
    浏览(6)
  • 数据结构---数组(java)

    1 、数组基础 1 用来存储一组类型相同的数据 2 在内存中,分配连续的空间,数组创建时要指定容量(大小) 3 数据类型[] 数组名 int[] arr = new int[10] int[] arr2 = {1,2,3,4} 4 索引---访问数组时通过索引进行操作 5 索引从0开始,最大为 arr.length -1 6 常见的错误: NullPointException ArrayI

    2024年01月23日
    浏览(10)
  • 数据结构(一)—— 数组

    数据结构(一)—— 数组

    数组是存放在连续内存空间上的相同类型数据的集合 ,也就是说数组 内存空间的地址 是连续的。 因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址,注意:数组的元素是不能删的,只能覆盖。 1、数组初始化分配内

    2023年04月22日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包