数组的创建及常用方法

数组创建

//第一种: 创建一个数组,定义长度为10
int[] arr = new int[10];

//第二种:创建一个数组,数组值为10,20
int[] arr = {10,20};

// 当然,还可以这样
// 这个java当初为了c++程序员能快速适应java而设定的,常用的应该是前面两种
int arr[] = new int[10];

常用的数组方法

找出数组中最大值,最小值,反转等

最大、最小值

int[] arr = {28,2,43,12,5,12};
// 遍历出数组最大值(最小值同理)
// 定义一个变量,然它跟循环出来的对比,如果大,就赋值给它
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
    if (arr[i]> max){
        max = arr[i];
    }
}
System.out.println("数组最大值是:"+ max);
// 数组最大值是:43

数组反转

int[] array = {12,3,123,432,122,55,9};
for (int i = 0; i < array.length/2; i++) {
    int temp = array[i];
    //这里为什么要length-1获取最后一个之后还要-1呢,因为循环i=1时,如果还是将length-1的值
    //跟赋值给array[i]的话就不对了,所以要跟着i++ 来 -i,才能刚好循环到i=2 = array.length-1-i才能刚好交换
    array[i] = array[array.length -1 -i];
    array[array.length -1 -i] = temp;
}
for (int i = 0; i < array.length; i++) {

    System.out.print(array[i] + " ");
    //9 55 122 432 123 3 12 
}

数组查询方法,常用的有数组遍历、二分法查找

数组遍历

public static void main(String[] args) {
    int[] arr = {2,4,4,5,2,5,6,12,8};
    //查找元素第一次出现的索引
    int index = getIndexByELE(arr, 5);
    System.out.println("该元素第一次在数组中出现的下标是:" + index);
    //该元素第一次在数组中出现的下标是:3
}

private static int getIndexByELE(int[] arr ,int ele) {
    for (int i = 0; i < arr.length; i++) {
        if (ele == arr[i]){
            return i;
        }
    }
    return -1;
}

二分法查找

public static void main(String[] args) {
    // 前提,必须排好序的数组(有序)
    int[] arr = {10,20,30,40,50,60,70,80,90};
    int index = getIndexByELE(arr, 80);
    System.out.println("元素所在索引位置:" + index);

}

private static int getIndexByELE(int[] arr, int ele) {
    // 定义最小、最大、中间索引
    int minInxex = 0;
    int maxInxex = arr.length-1;
    int centerIndex = (minInxex+maxInxex)/2;

    while (minInxex <= maxInxex){
        // 如果要找的这个元素,刚好等于中间元素索引,那么就直接返回中间索引
        if (ele == arr[centerIndex]){
            return centerIndex;
            //如果要找的元素索引大于中间索引,则移动最小索引值 = 中间索引+1
        }else if (ele > arr[centerIndex]){
            minInxex = centerIndex + 1;
            // 如果要找的元素索引小于中间索引,则移动最大索引值 = 中间索引-1
        }else if (ele < arr[centerIndex]){
            maxInxex = centerIndex - 1;
        }
        // 代码执行到这里,说明还没有找到,需要再次除2,取中间值
        centerIndex = (minInxex+maxInxex)/2;
    }

    return -1;//如果没有找到,返回-1
}

大家也可以看看视频讲解
https://www.bilibili.com/video/BV1T4411A7Fy?p=6&spm_id_from=pageDriver

posted @ 2021-03-13 00:45  老oo  阅读(1261)  评论(0编辑  收藏  举报