初学者,学Java
标题纯属吹牛,希望大佬可以多多补充
package com.atguigu.java;
import java.util.Scanner;
public class ArrayUtilTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//这里是声明调用
int[] arr = new int[]{12,34,35,33,67,45,23,11,78,34};
ArrayUtil test = new ArrayUtil();
test.overTraversal(arr);
System.out.println();
//最大值
int maxValue = test.getMax(arr);
System.out.println("最大值是:" + maxValue);
//最小值
int minValue = test.getMin(arr);
System.out.println("最小值是:" + minValue);
//和值
double sum = test.sum(arr);
System.out.println("和值是:" + sum);
//平均值
double avg = test.avg(arr);
System.out.println("平均值是:" + avg);
//数组的反转
System.out.println("数组反转后:");
int[] verse = test.ver(arr);
test.overTraversal(arr);
System.out.println();
System.out.println("再写一遍数组:");
int[] copyArr = new int[]{12,34,35,33,67,45,23,11,78,34};
test.overTraversal(copyArr);
System.out.println();
//数组的复制
System.out.println("数组复制后:");
int[] copy = test.copy(copyArr);
test.overTraversal(copyArr);
System.out.println();
//冒泡法
System.out.println("数组冒泡排序后:");
int[] bubble = test.sort(arr);
test.overTraversal(arr);
System.out.println();
//交换元素位置
System.out.println("交换元素位置:");
for(int i = 0 ; i < arr.length; i++){
for(int j = 0 ; j < arr.length - 1 - i ; j++){
//错误的:
// test.swap(arr[j],arr[j + 1]);
//正确的
test.swap(arr, j, j + 1);;
}
}
test.overTraversal(arr);
System.out.println();
//线性查找
System.out.print("请输入要查找的数字:");
int find = scan.nextInt();
System.out.print("数组线性查找的数字的位置是:");
int num1 = test.search(arr,find);
System.out.println();
//二分法
System.out.print("请输入要查找的数字:");
int find1 = scan.nextInt();
System.out.print("二分查找的数字的位置是:");
int num2 = test.search(arr,find1);
System.out.println();
}
}
class ArrayUtil{
//这里要封装很多方法,供ArrayUtil调用
//求数组的最大值
public int getMax(int[] arr){
int maxValue = 0;
for(int i = 0 ; i < arr.length; i++){
if(arr[i] > maxValue){
maxValue = arr[i];
}
}
return maxValue;
}
//求数组的最小值
public int getMin(int[] arr){
int minValue = arr[0];
for(int i = 0 ; i < arr.length; i++){
if(arr[i] < minValue){
minValue = arr[i];
}
}
return minValue;
}
//求数组的平均值
public double avg(int[] arr){
int sum = 0;
for(int i = 0 ; i < arr.length; i++){
sum += arr[i];
}
return sum * 1.0 / arr.length;
}
//求数组的和
public double sum(int[] arr){
int sum = 0;
for(int i = 0 ; i < arr.length; i++){
sum += arr[i];
}
return sum ;
}
//数组的反转
public int[] ver(int[] arr){
for(int i = 0 ; i < arr.length / 2 ; i++){
int temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
return arr;
}
//数组的复制
public int[] copy(int[] arr){
int[] arr1 = new int[arr.length];
for(int i = 0 ; i < arr.length; i++){
arr1[i] = arr[i];
}
return arr1;
}
//数组冒泡法排序
public int[] sort(int[] arr){
int[] arr2 = new int[arr.length];
for(int i = 0 ; i < arr.length; i++){
for(int j = 0;j < arr.length - 1 - i;j++ ){
if(arr[j] > arr[j + 1]){
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1 ] = temp;
}
}
}
return arr2;
}
//遍历数组
public void overTraversal(int[] arr){//遍历
for(int i = 0 ; i < arr.length ; i++){
System.out.print(arr[i] + " ");
}
}
//查找指定元素
public int search(int[] arr,int dest){
int addressNum = 0;
boolean isFlag = true;
for(int i = 0 ; i < arr.length; i++){
if(arr[i] == dest){
System.out.println("找到了!它的位置是:" + i);
isFlag = false;
addressNum = i;
break;
}
}
if(isFlag){
System.out.println("很遗憾没有找到!");
}
return addressNum;
}
//二分法查找
public int binarySearch(int[] arr , int dest){
int head = 0;
int end = arr.length - 1;
int middle = arr.length / 2;
boolean isFlag = true;
for(int i = 0 ; i < arr.length;i++){
if(arr[middle] == dest){
System.out.println("找到了!元素的位置是:" + middle);
isFlag = false;
break;
}
else if(arr[middle] > dest){
end = middle - 1;
}
else{
head = middle + 1;
}
}
if(isFlag){
System.out.println("很遗憾没有找到!");
}
return middle;
}
//错误的:交换数组中指定两个位置元素的值
// public void swap(int i , int j){
// int temp = i;
// i = j ;
// j = temp;
// }
//正确的:交换数组中指定两个位置元素的值
public void swap(int[] arr, int i , int j){//对应i 和 j 对应索引位置
int temp = arr[i];
arr[i] = arr[j] ;
arr[j] = temp;
}
}
知识点包括:面向对象之创建对象---对象调用方法---对象调用属性--值传递