数组参数分析图
数组地址转移分析图
数组多次删除元素及数组添加元素
/*
a. 找出数组中最大值的下标位置
b. 找出数组中最小值的下标位置
c. 在指定位置插入指定元素【难点】
存在一个数组,数组中的元素为
int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 0};
要求
1. 0是无效元素,仅占位使用
2. 当前数组中【有效元素】个数为9
需求
在该数组中的指定下标位置放入指定元素
d. 删除数组中的指定下标的元素【难点】
存在一个数组,数组中的元素为
int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
要求:
1. 0是无效元素,仅占位使用
需求:
在当前数组中删除指定下标的元素
例如:
删除下标5的元素
结果 {1, 3, 5, 7, 9, 13, 15, 17, 19, 0}
0占位!!!
*/
class Test1 {
public static void main(String[] args) {
/*定义一个int型数组,容量为10*/
int[] arr = {1, 3, 45, 546, 23, 2, 34, 34, 54, 4};
//调用得到定义数组的最大元素所在下标的方法
getSubscriptMaxNumber(arr);
System.out.println();
//调用得到定义数组的最小元素所在下标的方法
getSubscriptMinNumber(arr);
System.out.println();
int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 0};
int position = 8;
int number = 100;
//调用将元素插入到数组的指定位置的方法
insert(array, number, position);
System.out.println("插入元素之后");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + "\t");
}
System.out.println();
System.out.println();
int[] array1 = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int position1 = 0;
//有效元素个数
int count = 10;
//调用将数组的指定位置元素删除的方法
count = delete(array1, position1, count);
System.out.println("有效元素个数:" + count);
System.out.println("删除元素之后");
for (int i = 0; i < array1.length; i++) {
System.out.print(array1[i] + "\t");
}
System.out.println();
count = delete(array1, position1, count);
System.out.println("有效元素个数:" + count);
System.out.println("删除元素之后");
for (int i = 0; i < array1.length; i++) {
System.out.print(array1[i] + "\t");
}
}
/**
*该方法得到定义数组的最大元素所在下标,输出该下标
*@param arr int[] 数组类型 传递的数组参数
*无返回值
*/
public static void getSubscriptMaxNumber(int[] arr) {
int max = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[max] < arr[i]) {
max = i;
}
}
System.out.println("数组arr中最大元素所在下标等于:" + max);
}
/**
*该方法将元素插入到数组的指定位置
*@param arr int[] 数组类型 传递的数组参数
*无返回值
*/
public static void getSubscriptMinNumber(int[] arr) {
int min = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[min] > arr[i]) {
min = i;
}
}
System.out.println("数组arr中最小元素所在下标等于:" + min);
}
/**
*该方法将元素插入到数组的指定位置
*@param array int[] 数组类型 传递的数组参数
*@param number int类型 表示要插入的元素
*@param position int类型 表示指定的数组下标位置
*无返回值
*/
public static void insert(int[] array, int number, int position) {
//有效元素依次后移,直到将指定下标位置元素赋值给后一个位置
for (int i = array.length - 1; i > position; i--) {
array[i] = array[i - 1];
}
//将新值赋值到指定数组的下标位置
array[position] = number;
}
/**
*该方法将数组的指定位置元素删除,返回数组有效元素个数
*@param array int[] 数组类型 传递的数组参数
*@param count int类型 传递的数组有效元素个数
*@param position int类型 表示指定的数组下标位置
*
*@return count int类型 表示指定的数组有效元素个数
*/
public static int delete(int[] array, int position, int count) {
//有效元素个数判断
if (count = 0) {
System.out.println("有效元素个数为0,不必删除!!");
return 0;
}
//从指定位置开始,有效元素依次前移
for (int i = position; i < count - 1; i++) {
array[i] = array[i + 1];
}
//无效元素0(占位使用)赋值给数组最后一个,即数组的有效元素 -1
array[count - 1] = 0;
count--;
return count;
}
}