1,数组扩容
public static void grow(int[] array) {
//1. 参数合法性判断
if (null == array || array.length == 0) {
System.out.println("小伙子你会不会用~~~");
return;
}
//2. 获取原数组元素个数
int oldCapacity = array.length;
//3. 通过原数组元素计算新的元素个数 , 大约相对于原本元素个数的1.5倍
int newCapacity = oldCapacity + oldCapacity / 2;
//4. 创建新的数组,元素格式是原本的1.5倍
int[] newArray = new int[newCapacity];
//5. 利用循环拷贝数据
for (int i = 0; i < oldCapacity; i++) {
newArray[i] = array[i];
}
//6. 地址交换
array = newArray;
}
2:向排序之后的数组中增加一个数据
public static boolean addItemToArray(int[] array, int item) {
//1. 参数合法性判断
if (null == array || array.length == 0 || 0 == item) {
System.out.println("传入参数不合法");
return false;
}
//如果数组中最后一位元素的值不是0,调用grow,完成数组的扩容
if (array[array.length - 1] != 0) {
grow(array);
//System.out.println(array.length);
}
//2. 首先找到item应该放入到数组当中的位置,找到第一个比item大的数据
int index = array.length - 1;
for (int i = 0; i < array.length; i++) {
if (item < array[i]) {
//如果执行了if里面的语句体,证明已经找到了第一个比item
//大的数据下标,直接跳出循环
index = i;
break;
}
}
//数组里面的元素按照插入的条件部分向右移动
for (int j = array.length - 1; j > index; j--) {
array[j] = array[j - 1];
}
//把item放到他该去的地方
array[index] = item;
return true;
}
3:删除数组中的数据
public static boolean deleteItemInArray(int[] array, int item) {
//1. 参数合法性判断
if (null == array || array.length == 0 || 0 == item) {
System.out.println("传入参数不合法");
return false;
}
//2. 查找要删除数的下标,如果没有找到,返回false表示删除失败
int index = -1;
for (int i = 0; i < array.length; i++) {
if (item == array[i]) {
index = i;
break;
}
}
if (index != -1) {
for (int j = index; j < array.length - 1; j++) {
array[j] = array[j + 1];
}
array[array.length - 1] = 0;
return true;
} else {
return false;
}
}