数组功能大全

初学者,学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;
	}
}  

知识点包括:面向对象之创建对象---对象调用方法---对象调用属性--值传递

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值