zoukankan      html  css  js  c++  java
  • 数组的创建及常用方法

    数组创建

    //第一种: 创建一个数组,定义长度为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

  • 相关阅读:
    MVC中使用AuthorizeAttribute做身份验证操作
    MVC Dynamic Authorization--示例市在Action前进行的验证,应提前到Auth过滤器
    forms
    UEditor
    Test log4net
    log4net.config
    [转]log4net使用(WinForm/WebFrom)
    如何指定模型的显示格式和模板
    64位系统中连接Access数据库文件的一个问题
    VS2008简体中文正式版序列号
  • 原文地址:https://www.cnblogs.com/uzi666/p/14527246.html
Copyright © 2011-2022 走看看