java实现数组的操作(最大值,最小值,逆序排序,查询,数组的追加,添加,删除)
package com.zr.demo01;
import java.util.Arrays;
//数组的操作(最大值,最小值,逆序排序,查询,数组的追加,添加,删除)
public class Tenth {
public static void main(String[] args) {
int[] arr=new int[] {12,35,88,14,67,56,27};
//求最大值
System.out.println("最大值为:"+getMax(arr));//最大值为:88
//求最小值
System.out.println("最大值为:"+getMin(arr));//最大值为:12
//逆序排序
System.out.println("排序前的数组:"+Arrays.toString(arr));
reverse(arr);
System.out.println("排序后的数组:"+Arrays.toString(arr));
//查询
int select = select(arr, 14);
if (select==1) {
System.out.println("该数字在数组中存在");
}else {
System.out.println("该数字在数组中不存在");
}
//数组的追加
int[] arr1=new int[] {1,2,3,4,5};
int[] arr2=new int[] {6,7,8,9,10};
System.out.println("追加后的数组:"+Arrays.toString(append(arr1, arr2)));
int[] arr3=new int[10];
//添加
int curLength=0;
curLength = add(arr3,12, curLength,0);
System.out.println(Arrays.toString(arr3));
//删除
curLength=delete(arr3, curLength, 0);
System.out.println(Arrays.toString(arr3));
}
/**
* 求数组里面的最大值
* @param arr
* @return
*/
public static int getMax(int[] arr) {
int max=arr[0];
for (int num : arr) {
max=max>=num?max:num;
}
return max;
}
/**
* 求数组里面的最小值
* @param arr
* @return
*/
public static int getMin(int[] arr) {
int min=arr[0];
for (int num : arr) {
min=min<=num?min:num;
}
return min;
}
/**
* 逆序排序
* @param arr
*/
public static void reverse(int[] arr) {
for (int i = 0; i < arr.length>>1; i++) {
int temp=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
}
/**
* 查询
* @param arr
* @param num
* @return
*/
public static int select(int[] arr,int num) {
/*
for (int i : arr) {
if (i==num) {
return 1;
}
}
return -1;
*/
return Arrays.binarySearch(arr, num);
}
/**
* 数组的追加(将一个数组的数据添加到另一个数组的后面)
* @param arr1
* @param arr2
* @return
*/
public static int[] append(int[] arr1,int[] arr2) {
int[] newArr = new int[arr1.length+arr2.length];
//System.arraycopy(被复制的数组, 从被复制的数组的哪一位开始复制, 目标数组, 复制到目标数组的哪一位, 从被复制数组复制多少个);
System.arraycopy(arr1, 0, newArr, 0, arr1.length);
System.arraycopy(arr2, 0, newArr, arr1.length, arr2.length);
return newArr;
}
/**
* 添加数据
* @param arr
* @param curLength
* @param index
* @return
*/
public static int add(int[] arr,int data,int curLength,int index) {
//数组已满,不能添加数据
if (curLength==arr.length) {
System.out.println("数组已满,不能添加数据");
return curLength;
}
//插入的数组位置不正确
if (index<0||index>curLength) {
System.out.println("插入的数组位置不正确");
return curLength;
}
//给数据腾出index位置
for(int i=curLength-1;i>=index;i--) {
arr[i+1]=arr[i];
}
//赋值
arr[index]=data;
System.out.println("添加成功");
return ++curLength;
}
/**
* 删除数据
* @param arr
* @param curLength
* @param index
* @return
*/
public static int delete(int[] arr,int curLength,int index) {
//数组为空,不能删除
if (curLength==0) {
System.out.println("数组为空,不能删除");
return curLength;
}
//数组删除的位置不正确
if (index<0||index>=curLength) {
System.out.println("数组删除的位置不正确");
return curLength;
}
//删除数据
for(int i=index;i<=curLength;i++) {
arr[i]=arr[i+1];
}
System.out.println("删除成功");
return --curLength;
}
}