2.1趣说什么是数组,以及数据的读取、更新、插入、删除等操作代码(2)

一 什么是数组?
大伙都知道在军队里,每一个士兵都有自己的固定的位置、固定的编号,众多士兵紧密的排列在一起,高效地执行着一个个命令。
有一个数据结构就像数军队一样 整齐、有序,这个数据结构叫做数组。
数组是有限个相同类型数据的集合,数组的每个变量称为元素。数组是最为简单、最为常用的数据结构。

二、怎么样使用数组呢?

数据结构的操作无非是增、 删、改、 查 4种情况。

三 数组元素的基本操作

1.读取元素
假设一个名称为array的数组,我们读取下标为3的元素,就写作array[3];读取下标为5的元素,就写作array[5];
像这样下标读取的方式叫作随机读取。
简单的代码示例:
int array[] =new int[]{3,2,4,2,5,6,8,9};
System.out.println(array[3]);

2 更新数组元素
要把数组中的某个元素,替换成新值。操作也比较简单。
简单的代码示例。
int array[] =new int[]{3,2,4,2,5,6,8,9};
array[3] =10;
System.out.println(array[3]);

3.1插入元素

插入数组元素 分为3中情况。
尾部插入
中间插入
超范围插入

尾部插入最简单,直接把插入的元素放在数组尾部空闲的位置即可,等同于更新元素的操作。

中间插入稍微复杂一些,即把插入位置以及后面的元素一一向后以后,在把插入的元素放在对应数组响应的位置上。

private int array[];
private int size;

public MyArray(int capacity)
{
this.array = new int[capacity];
size = 0;
}

/数组插入元素/
/*
*@param element 插入的元素
*@param index 插入的位置
*
*/

public void insert (int element ,int index )throws Exception
{
if(index < 0 || index >size)
{
throw new IndexOutOfBoundsException("
超出数组实际元素");

     }
	for(int i = size; i >=index  ; i--)
	{
		   array[i+1] = array[i];
  }
//腾出的位置放入新元素
  array[index ] = element ;

}

/*
*
*输出数组
*/

public void output()
{
for (int i=0; i<size;i++)
{
System.out.println(array[i]);
}
}

public static void main(String[] args)
{
MyArray myArray = new MyArray(10);
myArray .insert(3,0);
myArray .insert(7,1);
myArray .insert(9,2);
myArray .insert(7,3);
myArray .output();
}

3.2 超范围插入

假如一个数组的大小为8,元素已经满啦,现还要插入一个元素就要扩容啦。

private int array[];
private int size;

public MyArray(int capacity)
{
this.array = new int[capacity];
size = 0;
}
/数组插入元素/
/*
*@param element 插入的元素
*@param index 插入的位置
*
*/

public void insert (int element ,int index )throws Exception
{
if(index < 0 || index >size)
{
throw new IndexOutOfBoundsException("
超出数组实际元素");

     }
    if(size >=array.legth )
    {
			resize();
    }
	for(int i = size; i >=index  ; i--)
	{
		   array[i+1] = array[i];
  }
//腾出的位置放入新元素
  array[index ] = element ;
  size++;

}

/*
*
*数组扩容
/
public void resize()
{
int arrayNew[] = new int[array.legth
2]
System.arraycopy(array,0,arrayNew,0,array.legth);
array =arrayNew;
}

/*
*
*输出数组
*/

public void output()
{
for (int i=0; i<size;i++)
{
System.out.println(array[i]);
}
}

public static void main(String[] args)
{
MyArray myArray = new MyArray(3);
myArray .insert(3,0);
myArray .insert(7,1);
myArray .insert(9,2);
myArray .insert(7,3);
myArray .output();
}

4 删除元素

数组的删除操作与插入操作正好相反,在删除的位置所有的元素都向前移动一位。
/数组删除元素/
/*
*@param index 删除的位置
*
*/

public void delete (int index )throws Exception
{
if(index < 0 || index >size)
{
throw new IndexOutOfBoundsException("
超出数组实际元素");

     }
    int   delectElement = array[index  ];
  for(int i= index  ; i < size-1;i++)
  {
  		  array[i] = array[i +1];
  }
  size --;
  return delectElement ;

}

5 数组的优势和劣势

数组的优势:优势体现在高效地随机访问能力,有一种高效地查找法,就是利用了数组的这个优势。

数组的劣势:劣势体现在插入与删除,插入与删除元素将导致大量元素被骗移动,影响效率。

总的来说,数组适合用在读操作多,写操作少的场合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_35968965

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值