JAVA数组(找最大元素,求平均值,查找,排序,逆序)

找数组中的最大元素

首先给一组数字,再定义一个变量max接收最大值,遍历数组,比较数组每个元素与max的值,如果数组元素大于max的值就将数组元素赋值给max,最后得出max的值。

public static void main(String[] args) {
    
    
	int[] arr = {
    
    1,2,3,4,5,6};
	System.out.println(max(arr));
}
//方法
public static int max(int[] arr) {
    
    
	int max = arr[0];
	for (int i = 1; i < arr.length; i++) {
    
    
		if (arr[i] > max) {
    
    
			max = arr[i];
	    }
	}
	return max;
}

//执行结果
6

求数组中元素的平均值

public static void main(String[] args) {
    
    
	int[] arr = {
    
    1,2,3,4,5,6};
	System.out.println(avg(arr));
}
//定义为double类型,结果不一定是整数
public static double avg(int[] arr) {
    
    
	double sum = 0;
	int n = arr.length; //数组长度
	for (int i = 0; i < n; i++) {
    
    
		sum += arr[i];//把数组中每个数加起来
	}
	return sum / n;
}

//执行结果
3.5

查找数组中指定元素

顺序查找(遍历数组挨个查找)

public static void main(String[] args) {
    
    
	int[] arr = {
    
    1,2,3,10,5,6};
	System.out.println(find(arr, 10));
}
//找10
public static int find(int[] arr, int toFind) {
    
    
	for (int i = 0; i < arr.length; i++) {
    
    
		if (arr[i] == toFind) {
    
    
			return i;//找到则返回其对应下标
		}
	}
	return -1; // 表示没有找到
}

//执行结果
3

二分查找

public static void main(String[] args) {
    
    
	int[] arr = {
    
    1,2,3,4,5,6};
	System.out.println(binarySearch(arr, 6));
}

public static int binarySearch(int[] arr,int n) {
    
    
	int left = 0;
	int right = arr.length - 1;
	//当左边的值大于右边的值时循环结束
	while(left < right) {
    
    
		int mid = (left + right) / 2;
		//要找的值在中间的左边则去左区间查找
		if(n < arr[mid]) {
    
    
			right = mid - 1;
		//要找的值在中间的右边则去右区间查找
		}else if(n > arr[mid]) {
    
    
			left = mid + 1;
		}else {
    
     //否则找到了
			return mid;//返回下标
		}
	}
	return -1;//循环完则没找到
}

//执行结果
5

检查数组有序性

public static void main(String[] args) {
    
    
	int[] arr1 = {
    
    1,2,3,10,5,6};
	int[] arr2 = {
    
    1,2,3,4,5,6};
	System.out.println(isSorted(arr1));
	System.out.println(isSorted(arr2));
}
//方法类型为布尔类型
public static boolean isSorted(int[] arr) {
    
    
	for (int i = 0; i < arr.length - 1; i++) {
    
    
		if (arr[i] > arr[i + 1]) {
    
    
			return false;
		}
	}
	return true;
}

//执行结果
false
true

数组排序

冒泡排序

在这里插入图片描述

public static void main(String[] args) {
    
    
		int[] arr = {
    
    9, 5, 2, 7};
		bubbleSort(arr);//按升序排
		System.out.println(Arrays.toString(arr));
}
public static void bubbleSort(int[] arr) {
    
    
    for (int i = 0; i < arr.length - 1; i++) {
    
    
        for (int j = 0; j < arr.length - 1 - i; j++) {
    
    
            if (arr[j + 1] < arr[j]) {
    
    
                int tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
    }
}

//执行结果
[2, 5, 7, 9]

数组逆序

设定两个下标, 分别指向第一个元素和最后一个元素. 交换两个位置的元素.
然后让前一个下标自增, 后一个下标自减, 循环继续即可.

public static void main(String[] args) {
    
    
int[] arr = {
    
    1, 2, 3, 4};
	reverse(arr);
	System.out.println(Arrays.toString(arr));
}
public static void reverse(int[] arr) {
    
    
	int left = 0;
	int right = arr.length - 1;
	while (left < right) {
    
    
		int tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;
		left++;
		right--;
	}
}

//执行结果
[4,3,2,1]

猜你喜欢

转载自blog.csdn.net/XSAAA/article/details/112645815