第2章 数组结构

前言

       几乎所有的程序设计语言中,都包含数组(Array)数据结构。一个数组元素可以表示成一个索引和名称,并且存储在相邻的计算机内存中,属于一种典型的线性表,当多个性质相同的是数据需要处理时,都可以使用数组方式存放数据。

2.1 线性表

       我们先来认识线性表。线性表或称为有序表,是数学概念应用在计算机科学中一种相当基本的数据结构。简单地说,线性表是n个元素的有限序列(n>=0),如26个英文字母的字母表:A,B,C,D,E,…,Z就是一个线性表。

2.1.1线性表定义

2.1.2线性表在计算机中的应用

  • 静态数据结构
  • 动态数据结构

2.2 认识数组

2.2.1一维数组

2.2.2二维数组

2.2.3三维数组

2.2.4n维数组

2.2.5Arrays类实现

2.3 矩阵的简介与运算

       基本上,数学中的矩阵是用来描述二维数组的最好方式,例如A为3*3的矩阵,也就是有3行和3列,如下所示。

       对于上面的A矩阵,我们是不是会马上想到了一个声明为A(1:3,1:3)的二维数组。许多矩阵的运算与应用,都可以使用计算机中的二维数组解决,例如两个矩阵的相加、相乘,或是某些稀疏矩阵、转置矩阵、上三角矩阵与下三角矩阵等。

2.3.1矩阵相加

2.3.2矩阵相乘

2.3.3转置矩阵

2.3.4稀疏矩阵

2.3.5上三角形矩阵

  • 右上三角形矩阵
  • 左上三角形矩阵

2.3.6下三角形矩阵

  • 左下三角形矩阵
  • 右下三角形矩阵

2.4 数组与多项式

       多项式是数学中相当重要的表现方式,通常如果使用计算机来处理多项式的各种相关运算,可以将多项式以数组或链表的形式来存储,我们主要学习多项式以数组结构方式表示的相关应用。

2.4.1认识多项式

2.4.2多项式的加法

小结

  • 线性表是n个元素的有限序列(n>=0),如26个英文字母列表就是一个线性表。
  • 线性表按照内存存储的方式,可分为两种:静态数据结构(static data structure)、动态数据结构(dynamic data structure)。
  • 静态数据结构或称为“密集表”(dense list),它将有序列表的数据使用连续存储空间(contiguous allocation)来存储。
  • 动态数据结构又称为“链表”(linked list),它将线性表的数据使用不连续存储空间来存储。
  • “指针变量”(pointer variable)是指内含值为指到内存存储位置的一种数据类型的变量。
  • 数组结构类型通常包含5种属性:起始地址、维度(dimension)、索引上下限、数组个数、数组类型。
  • α为A数组在内存中的起始位置,d为每一个数组元素所占用的空间,那么数组元素与内存地址有以下关系:Loc(A(i))=α+(i-1)×d。
  • Java语言中二维数组声明方式如下:

数据类型[ ][ ] 变量名称=new 数据类型[第一维长度][第二维长度];

  • 以行为主(Row-major):假设α为数值A在内存中的起始地址,d为单位空间,那么数组元素A(i,j)与内存地址与以下关系:

Loc(A(i,j))=α+n×(i-1)×d+(j-1)×d

  • 以列为主(Column-major):数组元素A(i,j)与内存地址有以下关系:

Loc(A(i,j))=α+(i-1)×d+m×(j-1)×d

  • Java语言中三维数组声明方式如下:

数据类型[ ][ ][ ] 变量名称=new 数据类型[第一维长度][第二维长度][第三维长度];

  • Java中的Arrays类提供许多对于数组的处理方法,比如排序、查找、复制、填充及比较等。
  • 假设A为m×n矩阵,则A^t 为n×m矩阵,对每一个A(i,j)=A^t (j,i),则称A^t 为A的转置矩阵。
  • 稀疏矩阵最简单的定义就是,一个矩阵中大部分的元素为0即可称为“稀疏矩阵”(Sparse Matrix)。
  • 上三角形矩阵(Upper Trangular Matrix)就是一种对角线以下皆为0的n×n矩阵,其中又可分为右上三角形矩阵(Right Upper Trangular Matrix)与左上三角形矩阵(Left Upper Trangular Matrix)。
  • 下三角形矩阵(Lower Trangular Matrix)是一种对角线以上元素皆为0的n×n矩阵,其中又可分为左下三角形矩阵(Left Lower Trangular Matrix)和右下三角形矩阵(RightLower Trangular Matrix)。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值