java实现数组

private int[] elements;  //用于存储数据的数组

//初始化
public MyArrey1() {
	elements = new int[0];
}

//获取长度
public int size() {
	return elements.length;
}

//数组元素的添加
public void add(int element) {
	int[] newArr = new int[elements.length + 1];
	for (int i = 0; i < newArr.length; i++) {
		newArr[i] = elements[i];
	}
	newArr[elements.length] = element;
	elements = newArr;
}

//数组元素的删除
public void delete(int index) {
	if (index < 0 || index > elements.length - 1) {
		throw new RuntimeException("越界");
	}
	int[] newArr = new int[elements.length - 1];
	for (int i = 0; i < newArr.length; i++) {
		if (i < index) {
			newArr[i] = elements[i];
		} else {
			newArr[i] = elements[i + 1];
		}
	}
	elements = newArr;
}

//获取某个下标的元素
public int get(int index) {
	return elements[index];
}

//插入元素到指定位置
public void insert(int num, int index) {
	int[] newArr = new int[elements.length + 1];
	for (int i = 0; i < newArr.length; i++) {
		if (i < index) {
			newArr[i] = elements[i];
		} else if (i == index) {
			newArr[i] = num;
		} else {
			newArr[i] = elements[i + 1];
		}
	}
	elements = newArr;
}

//替换指定位置的元素
public void set(int index, int element) {
	elements[index] = element;
}

//元素的线性查找
public int search(int[] arr, int num) {
	for (int i = 0; i < arr.length; i++) {
		if (arr[i] == num) {
			return i;
		}
	}
	return -1;
}

// 二分法查找 -- 有局限
public void BinarySearch(int[] arr, int target) {
	int begin = 0;
	int end = arr.length - 1;
	int mid = (begin + end) / 2;
	int index = -1;
	if (begin >= end) {
		System.out.println(-1);
	}
	while (true) {
		if (arr[mid] == target) {
			index = mid;
			break;
		} else {
			if (arr[mid] > target) {
				end = mid - 1;
			} else {
				begin = mid + 1;
			}
			mid = (begin + end) / 2;
		}
	}
	System.out.println("index:" + index);
}

猜你喜欢

转载自blog.csdn.net/qq_41409907/article/details/89033513