JavaArrays类,二分法与排序

Arrays类

操作数组的一个工具类,封装了很多常用来操作数组的方法。

toString()方法

把数组中的内容用字符串的形式返回。

public class ArraysDemo {
	public static void main(String[] args) {
		int[] arr = new int[]{2,3,1,6,5,8};
		//toString() 把数组中的内容用字符串的形式返回,
		System.out.println(arr);//[I@15db9742 (对象,后面的是当前对象所在内存的地址)
		System.out.println(Arrays.toString(arr));//[2, 3, 1, 6, 5, 8]
	}
}

equals()方法

比较两个数组的内容是否相等。

public class ArraysDemo {
	public static void main(String[] args) {
		int[] arr = new int[]{2,3,1,6,5,8};
		int[] arr1 = new int[]{2,3,1,6,5,8};
		//equals() 比较两个数组的内容是否相等
		System.out.println(arr==arr1);//false (比较的是地址,自然不相同)
		System.out.println(Arrays.equals(arr, arr1));//true,这里比较的是内容
	}
}

sort排序

public class ArraysDemo {
	public static void main(String[] args) {
		int[] arr1 = new int[]{2,3,1,6,5,8};
		/*
		 *  static void sort(int[] a)
		 * 	对指定的数组进行排序(数字的升序)
		 */
		Arrays.sort(arr1);//排序了
		System.out.println(Arrays.toString(arr1));
	}
}

二分查找法

public class ArraysDemo {
	public static void main(String[] args) {
		int[] arr1 = new int[]{2,3,1,6,5,8};
		int[] arr5 = new int[]{2,3,1,6,5,8};
		/*
		 *  二分查找法
		 *  binarySearch(int[] arr,int value) 
		 * 	使用二分查找法,首先需要保证数组是有序的。
		 */
		//如果值为负数,代表没有找到这个指定数。返回的数字是-(应该在数组中的索引+1)
		System.out.println(Arrays.binarySearch(arr1, 3));
		System.out.println(Arrays.binarySearch(arr5, 9));
	}
}

利用循环实现二分查找

二分法实现的前提是数组已经有序。

import java.util.Scanner;
public class erfen {
    public static void main(String[] args) {
        System.out.println("请输入要找的数");
        Scanner sc=new Scanner(System.in);
        int num=sc.nextInt();
        int[] a={5,7,9,11,13,15,17,19,21};
        int s=0;
        int e=a.length-1;
        boolean flag=false;
        while (s<=e){
            int mid=(s+e)/2;
            if(a[mid]==num){
                System.out.println("在下标为"+mid+"处找到了"+num);
                flag=true;
                break;
            }else if(a[mid]>num){
                e=mid-1;
            }else {
                s=mid+1;
            }
        }if(flag==false){
            System.out.println("没有这个数");
        }
    }
}

选择排序与插入排序

选择排序

第一种方法

public class xuanze {
    public static void main(String[] args) {
        int []a={2,6,3,49,1,20,30,11,9};
        for(int i=0;i<a.length-1;i++){
            int max=a[i];
            int t=i;
            for(int j=i+1;j<a.length;j++){
                if(max<a[j]){
                    max=a[j];
                    t=j;
                }
            }a[t]=a[i];
            a[i]=max;
        }
        System.out.println(Arrays.toString(a));
    }
}

第二种方法

public class xuanze1 {
    public static void main(String[] args) {
        int[] a={9,10,3,5,1,8,6,11,22};
        for(int i=0;i<a.length-1;i++){
            int min=i;
            for(int j=i+1;j<a.length;j++){
                if(a[j]<a[min]){
                    min=j;
                }
            }
//            if(min!=i){
                int tmp=a[i];
                a[i]=a[min];
                a[min]=tmp;
//            }
        }
        System.out.println(Arrays.toString(a));
    }
}

插入排序

public class charu {
    public static void main(String[] args) {
        int[] a={2,6,12,3,1,5,10,21,16};
        int tmp;
        for(int i=0;i<a.length-1;i++){
            for(int j=i+1;j>0;j--){
                if(a[j]>a[j-1]){
                    tmp=a[j-1];
                    a[j-1]=a[j];
                    a[j]=tmp;
                }else {
                    break;
                }
            }
        }
        System.out.println(Arrays.toString(a));
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_49143795/article/details/107375706