求数组最大值、最小值、平均值、求和
package arraytest;
/*
* 数组算法:求最大值、最小值、平均值、求和。
*/
public class Arrayalgorithm {
public static void main(String args[])
{
//定义一个一维数组
int[] array = new int[] {54,98,71,-98,-20,0,89,34,58,66};
//初始化最大值,最小值,和数,平均数
int maxarray = array[0];
int minarray = array[0];
int sum = 0;
double average = 0;
// 求最大值
for(int i = 0;i < array.length;i++)
{
if(maxarray < array[i]) {
maxarray = array[i];
}
if(minarray > array[i]) {
minarray = array[i];
}
sum+=array[i];
}
average = sum/array.length;
System.out.println("最大值为:"+maxarray);
System.out.println("最小值为:"+minarray);
System.out.println("和为:"+sum);
System.out.println("平均值为:"+average);
//定义一个二维数组
int[][] array2 = new int[][] {{4,7,-9},{32,56,99},{-8,-9,10,26}};
//初始化最大值,最小值,和数,平均数,二维数组长度
int maxarray2 = array[0];
int minarray2 = array[0];
int sum2 = 0;
double average2 = 0;
int len = 0;
for(int i = 0;i < array2.length;i++) {
for(int j = 0;j < array2[i].length;j++)
{
if(maxarray2 < array2[i][j]) {
maxarray2 = array2[i][j];
}
if(minarray2 > array2[i][j]) {
minarray2 = array2[i][j];
}
sum2 += array2[i][j];
}
len += array2[i].length;
}
average2 = sum2/len;
System.out.println("\n最大值为:"+maxarray2);
System.out.println("最小值为:"+minarray2);
System.out.println("和为:"+sum2);
System.out.println("平均值为:"+average2);
}
}
数组的复制、反转、线性查找、二分查找
package arraytest;
public class Arrayalgorithm2 {
public static void main(String[] args) {
String[] arr = new String[]{"JJ","DD","MM","BB","GG","AA"};
//数组的复制(区别于数组变量的赋值:arr1 = arr)
String[] arr1 = new String[arr.length];
for(int i = 0;i < arr1.length;i++){
arr1[i] = arr[i];
}
//数组的反转
//方法一:
for(int i = 0;i < arr.length / 2;i++){
String temp = arr[i];
arr[i] = arr[arr.length - i -1];
arr[arr.length - i -1] = temp;
}
//方法二:
for(int i = 0,j = arr.length - 1;i < j;i++,j--){
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
//遍历
for(int i = 0;i < arr.length;i++){
System.out.print(arr[i] + "\t");
}
System.out.println();
//查找(或搜索)
//线性查找:
String dest = "BB";
dest = "CC";
boolean isFlag = true;
for(int i = 0;i < arr.length;i++){
if(dest.equals(arr[i])){
System.out.println("找到了指定的元素,位置为:" + i);
isFlag = false;
break;
}
}
if(isFlag){
System.out.println("很遗憾,没有找到的啦!");
}
//二分法查找:(熟悉)
//前提:所要查找的数组必须有序。
int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
int dest1 = -34;
dest1 = 35;
int head = 0;//初始的首索引
int end = arr2.length - 1;//初始的末索引
boolean isFlag1 = true;
while(head <= end){
int middle = (head + end)/2;
if(dest1 == arr2[middle]){
System.out.println("找到了指定的元素,位置为:" + middle);
isFlag1 = false;
break;
}else if(arr2[middle] > dest1){
end = middle - 1;
}else{//arr2[middle] < dest1
head = middle + 1;
}
}
if(isFlag1){
System.out.println("很遗憾,没有找到的啦!");
}
//
}
}
Arrays工具类的使用
1、复制数组
2、输出数组信息
3、数组排序
4、查找
package arraytest;
import java.util.Arrays;
public class Arraystools {
public static void main(String args[]) {
int[] arr1 = new int[] {25,36,98,57};
int[] arr2 = new int[] {25,57,98,57};
// 比较两个数组是否相等
boolean flag = Arrays.equals(arr1, arr2);
System.out.println(flag);
// 输出数组信息
System.out.println(Arrays.toString(arr1));
// 将指定值填充到数组中
Arrays.fill(arr1, 10);
System.out.println(Arrays.toString(arr1));
// 对数组进行排序
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
// 对排序后的数组进行二分法检索指定的值
Arrays.binarySearch(arr2,98);
System.out.println(Arrays.binarySearch(arr2,98));
}
}