面向对象的数组
数组操作 工具类
package com.yifan.testArray;
import java.util.Arrays;
/**
* @Author YIFan
* @Date 2020/6/7 10:40
* @Version 1.0
*/
public class ArrayUtil {
// 目标数组
private int[] target;
// 创建数组
public ArrayUtil() {
target = new int[0];
}
// 查看数组长度
public int size(){
return target.length;
}
// 查看数组元素
public void getinto(){
System.err.println(Arrays.toString(target));
}
// 数组的末尾添加元素
public void add(int ele){
int[] newArray = new int[target.length + 1];
for (int i = 0; i < target.length; i++) {
newArray[i] = target[i];
}
newArray[target.length] = ele;
target = newArray;
}
// 数组删除元素--根据下标
public void del(int ele_index){
// 判断下标
if( ele_index < 0 || ele_index > target.length-1 ){
throw new RuntimeException("下标越界...");
}
int[] newArray = new int[target.length - 1];
// 复制原有数组到新数组
for (int i = 0; i < newArray.length; i++) {
if(i < ele_index){// 删除元素之前的元素
newArray[i] = target[i];
}else {// 删除元素之后的元素
newArray[i] = target[i+1];
}
}
target = newArray;
}
// 插件元素到指定位置
public void insert (int index,int ele){
int[] newArray = new int[target.length + 1];
if (index < 0 || index> newArray.length-1){
throw new RuntimeException("数组越界...");
}
for (int i = 0; i < target.length; i++) {
if( i < index){//目标位置之前的元素
newArray[i] = target[i];
}else {// 目标位置之后的元素
newArray[i+1] = target[i];
}
}
// 插入新的元素
newArray[index] = ele;
// 新数组替换旧数组
target = newArray;
}
// 替换指定位置的元素
public void set(int index, int ele){
target[index] = ele;
}
// 线性查找 -- 效率低
public int search(int ele){
for (int i = 0; i < target.length; i++) {
if (target[i] == ele){
return i ;
}
}
return -1 ;
}
// 二分法查找 -- 数组元素需是顺序排列
public int binarySearch(int ele){
// 记录开始位置
int start = 0;
// 记录结束位置
int end = target.length-1 ;
// 记录中间位置
int mid = ( start + end ) / 2 ;
// 循环查找
while (true){
// 开始位置和结束位置重合 或者 开始在结束之后 既 没有这个元素
if(start > end ){
return -1 ;
}
// 判断中间这个元素是不是要查找的
if(target[mid] == ele ){// 是
return mid;
}else {
// 判断中间元素和目标元素的大小
if( target[mid] > ele ){
// 把结束位置调整到中间位置前一个
end = mid - 1 ;
}else {
// 把开始位置调整到中间位置后一个
start = mid + 1 ;
}
// 取出新的中间位置
mid = ( start + end ) / 2 ;
}
}
}
}