数组常见操作
8.19 day7
数组常见操作
- 获取数组最值
public static int maxElement(int[] arr) {
// 假设第一个元素的值就是最大值
int max = arr[0];
// 遍历数组元素,依次和假设的最大值作比较
for(int i = 1; i < arr.length; i++) {
// 取出每个元素的值和value作比较
if(arr[i] > max) {
// 推翻假设,更新最大值
max = arr[i];
}
}
return max;
}
- **通过值获取索引**
```java
public static int search(int[] arr, int value) {
// 遍历数组,把数组中的元素依次和value作比较
for(int i = 0; i < arr.length; i++) {
// 取出元素值和value作比较
if(arr[i] == value) {
return i; // 找到相同的元素,返回索引位置
}
}
// 未找到,则返回-1
return -1;
}
- 数组元素的反转
/**
* 将数组反序输出
* **@param** arr 需要反序的数组
* **@return** 返回反序后的数组
*/
public static int[] reverseOrderArray(int[] arr) {
// 定义一个反序后的数组
int[] desArr = new int[arr.length];
// 把原数组元素倒序遍历
for(int i = 0; i < arr.length; i++) {
// 把arr的第i个元素赋值给desArr的最后第i个元素中
desArr[arr.length - 1 - i] = arr[i];
}
// 返回倒序后的数组
return desArr;
}
实现(二):直接对数组中的元素进行收尾交换。
【示例二】
/**
* 将数组反序输出
* **@param** arr 需要反序的数组
*/
public static void reverseOrderArray(int[] arr) {
// 把原数组元素倒序遍历
for(int i = 0; i < arr.length/2; i++) {
// 把数组中的元素首尾交换
int temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}
}
- 数组元素的删除
public static int[] deleteElement(int[] arr, int index) {
// 第一步:判断索引是否合法
if(index < 0 || index >= arr.length) {
System._out_.println("索引越界");
return; // 索引不合法,直接结束方法
}
// 第二步:从index个元素开始,将后一个元素向前移动一位
for(int i = index; i < arr.length - 1; i++) {
// 将后一个元素向前移动一位
arr[i] = arr[i + 1];
}
// 第三步:将最后一个元素设置为默认值
arr[arr.length - 1] = 0;
return arr;
}
- 数组元素和插入
public static int[] insertElement(int[] arr, int index, int value) {
// 第一步:判断索引是否合法
if(index < 0 || index >= arr.length) {
System._out_.println("索引越界");
// 抛出一个索引越界异常(异常第六章学习)。
throw new ArrayIndexOutOfBoundsException("索引越界:"+index);
}
// 第二步:给数组扩容
// 定义一个变量,用于保存实际存放元素的个数
int size = 10;
// 如果数组的空间长度等于实际存放元素的个数,则执行扩容操作
if (arr.length == size) {
// 创建一个更大的数组
int[] newArr = new int[arr.length + 1];
// 把原数组中的数据,复制给新创建的数组
**for** (**int** i = 0; i < arr.length; i++) {
newArr[i] = arr[i];// 拷贝操作
}
// 让arr指向堆里面的newArr数组
arr = newArr;
}
// 第三步:插入索引位置之后的元素往后移动一位
for (int i = arr.length - 2; i >= 2; i--) {
arr[i + 1] = arr[i];
}
// 第四步:给index索引位置赋值
arr[index] = value;
// 返回插入元素成功的数组
return arr;
}