数据结构--数组

数组不是线性表。
数组的实现,核心是通过一个初始化的地址值、数组的长度、每个数组元素占得字节数组成。【因此会发现java中的数组就给我们提供了获取数组长度、得到某个数组元素值方法】
定位:用初始化的地址值与下标定位。【java数组本身的功能】

【以下是自定义的一些方法,也就是说几乎所有的人都会这样去实现数组的查找、插入、删除操作;因此也就是说数组查找快,末尾插入快、但是中间插入慢,删除中间元素慢】

查找:用的是遍历数组的方式

插入:插入到最后。【实际上这里的max才是数组的真实长度,mArrayLength只是我们真是向数组中存入的数组元素时的长度】

删除:用的是遍历,会把后边的元素依次向前挪动一个位置,同时mArrayLength减1

public class CustonArray {
	private int[] mArray;
	private int mArrayLength;// 实际长度

	public CustonArray(int max) {
		mArray = new int[max];
		mArrayLength = 0;
	}

	public int length() {
		return mArray.length;
	}

	public int get(int index) {
		return mArray[index];
	}

	public boolean find(int value) {
		for (int i = 0; i < mArrayLength; i++) {
			if (mArray[i] == value) {
				return true;
			}
		}
		System.out.println("未找到");// 这里是一种算法规范,即每次都要有提示
		return false;
	}

	public void insert(int value) {
		mArray[mArrayLength] = value;
		mArrayLength++;
	}

	public void delete(int value) {
		int i;
		for (i = 0; i < mArrayLength; i++) {
			if (mArray[i] == value) {
				break;
			}
		}
		if (i == mArrayLength) {
			System.out.println("未找到");
			return;
		}
		mArrayLength--;
		for (; i < mArrayLength; i++) {
			mArray[i] = mArray[i + 1];
		}
	}
}



注意:
1、private int mArrayLength;这种情况下是实际上mArrayLength已经有默认值了为0;
2、数组定义为int mArray[10];实际上这个数组中的数组元素的值默认为0;但是对于String mStringArray[10];这里面数组元素值为null
3、java中原有数组只给我们留得接口就是获取长度方法;根据下标获取对应的数组元素。

4、实际上java自带的数组是原始的数组。而我们需要的数组类型,有序,无序;重复,不重复。操作:查找,更新,插入,删除的基本操作。还有额外地遍历,排序等操作。决定这些操作快慢的核心实际上和存储、组织这些数据有巨大的关系。另外在过去对于一些获取数据结构长度时,实际是在插入数据中添加了一步长度自增操作,分担了一次性获取长度的速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值