Day06-Arrays工具类

总结

我是最棒的!基础不牢,地动山摇!

手动写Arrays中的工具类和查看API文档

常用的工具类有排序Arrays.sort();
二分查找具体值的索引Arrays.binarySearch()
打印数组 Arrays.toString();

这些方法都可以再API文档里面查找

public class ArrayUtil {

	public static void main(String[] args) {
		int[] arr = {1,2,3,4,5};
		printArray(arr);
	}
	
	/**
	 * 写一个方法,打印数组中的所有元素,像这种格式[1,2,3,4,5]
	 * @param arr
	 */
	public static void printArray(int[] arr){
		for(int i = 0;i<arr.length;i++){
			if(i == 0){
				System.out.print("["+arr[i]+",");
			}else if(i == arr.length-1){
				System.out.print(arr[i]+"]");
			}else {
				System.out.print(arr[i]+",");
			}
		}
	}

}

冒泡排序

public class BubbleSort {
	
	/**
	 * 冒泡排序法
	 * 数组长度为length 需要排length-1轮
	 * 每一轮需要排length-1-i次 (i为轮数) 轮数从0开始
	 * @param args
	 */

	public static void main(String[] args) {
		
		int[] arr = {2,5,3,1,4};
		bubbleSort(arr);
//		for (int i : arr) {
//			System.out.print(i+" ");
//		}
		ArrayUtil.printArray(arr);
	}
	
	public static void bubbleSort(int[] arr){
		if(arr == null || arr.length < 2){
			return;
		}
		
		for(int i = 0;i<arr.length-1;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;
					swap(arr, j, j+1);
				}
			}
		}
	}
	
    //交换数组中两个元素的值
	public static void swap(int[] arr,int a,int b){
		int temp = arr[a];
		arr[a] = arr[b];
		arr[b] = temp;
	}

}

二分查找

public class BinarySearch {

	public static void main(String[] args) {
		int[] arr = {1,2,3,4};
		int index = binarySearch(arr, 4);
		System.out.println(index);
	}
	
	/**
	 * 二分查找
	 * @param num
	 */
	public static int binarySearch(int[] arr,int num){
		
		int minIndex = 0;
		int maxIndex = arr.length-1;
		int midIndex = (minIndex + maxIndex)/2;
		
		while(minIndex<=maxIndex){
			if(num == arr[midIndex]){
				return midIndex;
			}else if(num > arr[midIndex]){
				minIndex = midIndex+1;
			}else if(num < arr[midIndex]){
				maxIndex = midIndex-1;
			}
			midIndex = (minIndex + maxIndex)/2;
		}
		return -1;

	}

}

可变参数

为了解决参数变动的一类问题,比如求和或者求积

一个方法根据输入的参数动态创建数组
一个方法只能有一个可变参数,且只能在形参列表的末尾(… arr) 三个点不多也不少

public class AlterableParameter {

	/**
	 * 可变参数,根据输入的参数动态创建数组
	 * 一个方法只能有一个可变参数,且只能在形参列表的末尾(... arr) 三个点不多也不少
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(getSum(1,2,3,4));
		int[] arr = {1,2,3,4,5};
		System.out.println(Arrays.toString(arr));

	}
	
	public static int getSum(int... a){
		int sum = 0;
		for(int i = 0;i<a.length;i++){
			sum += a[i];
		}
		return sum;
	}

}

增强for循环

foreach适用于数组遍历

需要对数组中具体的值操作需要使用for循环

public class Foreach {

	/**
	 * 增强for循环,适用于只遍历,不对其中的元素进行操作
	 * @param args
	 */
	public static void main(String[] args) {
		int[] arr = {1,5,3,2,4};
		for (int i : arr) {
			System.out.println(i);
		}
		
		int[][] arr2 = new int[3][3];
		for (int[] is : arr2) {
			for (int i : is) {
				System.out.println(i);
			}
		}
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值