找数组中的最大元素
首先给一组数字,再定义一个变量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]