zoukankan      html  css  js  c++  java
  • javase(4)_数组

    一、数组概述

    数组可以看成是多个相同类型数据组合,对这些数据的统一管理.

    数组变量属于引用类型,数组也可以看成对象,数组中的每个元素相当于该对象的成员变量.

    数组中的元素可以是任意类型,包括基本类型和引用类型,有默认初始值(按照成员变量的规则).

    二、一维数组定义

    实例:

    int[] a= new int[2];      //
    int[] b= new int[]{1,2,3};  //
    int[] c={1,2,3};         //
    int[] d=new int[2]{1,2};   //
    
    int[] a=new int[2];
    int b=a[2];            //对,有默认值
    int b=a[3];            //运行期错误,编译无问题。
    
    int[]a;
    int k = a[2];          //编译报错,未初始化,只是开辟了栈内存
    
    Person[] p=new Person[5];   p[0].age;    //运行期空指针异常

    三、数组长度

    java中每个数组都有一个public final int 的length属性,表示数组的长度,一旦确定就不能改变大小.

    四、二维数组定义

    二维数组可以看成数组的数组.

    实例

    int a[][]={{1,2},{2,4},{2,5}}   //
    int a[][]=new a[3][]       //二维变长数组
    a[0]=new int[10];
    a[1]=new int[2];
    a[2]={1,2};             //报错,此处和一维数组有区别
    int a[][]=new a[][3];       //

    五、数组实例

    /*取最值*/
    int[] array = new int[]{2,4,5,1,3,9};
    int max=0;
    for(int i=1;i<array.length;i++){
      if(array[max]<array[i]){
        max=i;
      }
    }
    System.out.println(array[max]);
    
    /*选择排序*/
    for(int i=0;i<array.length-1;i++){
      int min=i;
      for(int j=i+1;j<array.length;j++){
        if(array[min]>array[j]){
          min=j;
        }
      }
      if(min != i){
        array[i] = array[i]^array[min];
        array[min] = array[i]^array[min];
        array[i] = array[i]^array[min];
      }
    }
    
    /*冒泡排序法*/
    for(int i=0;i<array.length-1;i++){
      for(int j=0;j<array.length-i-1;j++){
        if(array[j]>array[j+1]){
          array[j]=array[j]^array[j+1];
          array[j+1]=array[j]^array[j+1];
          array[j]=array[j]^array[j+1];
        }
      }
    }
    
    /*反转数组*/
    public static void reverseArray(int[] arr){
      for(int start=0,end=arr.length-1; start<end ; start++,end--){
        int temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
      }
    }
    
    /*二分查找法*/
    public static int getArrayIndex(int target){
      int num=0;
      int left=0;
      int last=array.length-1;
      int middle = (left+last)>>1;
      while(array[middle]!=target){    
        if(array[middle]>target){
          last=middle-1;
        }else{
          left=middle+1;
        }  
        middle=(left+last)>>1;
        num++;
      }
      return middle;
    }

    ps:面试题,插入一个数,保持数组排序,插入的位置?

    二分查找条件改为:while(array[left]<=array[last]),插入的位置:left+1

    六、实际使用数组时,使用java.util.Arrays类和apache.long.ArrayUtils类中提供的数组方法。

    ps(常用的数组方法): http://www.iteye.com/news/28296

    
    
  • 相关阅读:
    ApacheServer-----关于443端口被占用的解决方法
    《小强与小明》——正在疯传的伟大的故事
    不争万年,只珍朝夕------我的态度
    dubbo搭建
    使用netty的第一个Hello World
    myBatis数据库常用标签
    mysql 索引
    tomcat部署项目的一点心得
    【康托展开】
    初探计算机硬盘
  • 原文地址:https://www.cnblogs.com/wangweiNB/p/4778374.html
Copyright © 2011-2022 走看看