数据结构-数组

数组的介绍

数组是在内存中存储相同数据类型的连续的空间,声明一个数组就是在内存空间中划出一串连续的空间。

数组名代表的是连续空间的首地址。

通过首地址可以依次访问数组所有元素。

元素在数组中的排序下标从零开始。

数组的特性:

数组长度一旦声明,不可改变不可追加。

数组可以存储基本数据类型也可以存储引用数据类型(对象)。

如图:
image.png

基本数据类型数组默认初始化都是0

int arr [] =new int[5];
        for(int i : arr){
            System.out.print(i); // 输出:00000
        }

引用数据类型数组默认初始化为null

Object arr [] =new Object[5];
        for(Object i : arr){
            System.out.print(i);// 输出:nullnullnullnullnull
        }

数组的使用

声明一个数组:
1.类型 [] 变量名
2.类型 变量名 []

例如:

int [] arr   //建议这种
int arr []

给数组分配内存空间:

arr = new int[5];

给数组赋值:

arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;

给数组赋值也可以隔着位置赋值:

arr[1] = 2;
arr[3] = 4;

for(int a : arr){
  system.out.print(a); //没赋值的默认为0
}
//用循环给数组赋值
for(int i=0; i<arr.length; i++){
   arr[i] = i+1;
}

声明一个数组并给数组赋值:

int []arr = new int[]{1,2,3,4,5};

int []arr ={1,2,3,4,5};  //简写

数组的应用:

查找算法:
查找数组中一个数,返回这个数所在数组中的位置。
最笨的方法:(暴力法)
思想:遍历数组,每个值都和目标值进行比对,相等则返回下标。

public int search(int arr[],int target){
        for(int i=0;i<arr.length;i++){
            if(target == arr[i]){
                return i;
            }
        }
        return -1;
    }

二分查找算法:(前提数组是有序的)
思想:定义两个指针,每次截取一半,如果大于目标值,就把前指针移动到截取的位置+1;否则移动后指针,知道满足目标值等于两指针和的一半对应的值则返回。

后边会介绍8中排序算法

 public int binarry(int [] arr,int target){
        Arrays.sort(arr);  //java中内置函数,排序
        //定义一个起始位置
        int start =0;
        int end =arr.length-1;  //数组下标

        while(true){
            int index = (start+end)/2;
            if(target == arr[index]){
                return index;  //返回数组下标
            }
            else if(target > arr[index]){
                  start=index+1;    //取索引右边一位
            }else{
                  end = index-1;    //取索引左边一位
            }
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值