数组

数组:相同类型的、用一个标识符封装到一起的基本数据类型序列或对象序列。在java中将数组看做是一个对象。

一维数组的创建及使用
创建一维数组的两种方式:
1. 先声明,在用new运算符进行内存分配;声明一维数组的两种方式如下:
A. 数组元素类型 数组名[];
B. 数组元素类型[] 数组名;
声明数组后,还不能立即访问它的任何元素,还需要为它分配内存空间,在为数组分配内存空间时,必须指明数组的长度;语法如下:
数组名 = new 数组元素的类型[数组元素的个数];    //使用new关键字为数组分配内存时,整型数组中各个元素的初始值都为0

2. 声明的同时为数组分配内存;如下:
数组元素的类型 数组名[] = new 数组元素的类型[数组元素的个数];

初始化一维数组的两种方式:
int arr[] = new int[]{2,4,6,8,10};    //创建有五个元素的数组
int arr2[] = {34,23,12,6};    //创建有四个元素的数组


二维数组的创建及使用
如果一维数组中的各个元素仍是数组,那么它就是一个二维数组。

创建二维数组的两种方式:
1. 先声明,在用new运算符进行内存分配;声明二维数组的两种方式如下:
A. int arr[][];
B. int [][] arr;

同一维数组一样,声明后需要为它分配内存空间;对用高维度数组,有两种分配方式:
A. 直接为每一维分配内存空间:
arr = new int[2][4];    //在二维数组arr中创建了两个长度为四的一维数组
B. 分别为每一维数组分配内存
arr[0] = new[2];
arr[1] = new[4];


2. 声明的同时为数组分配内存;如下:
int arr[] = new int[2][4];

初始化二维数组:
int arr2[][]= {{},{}};    //创建包含两个一维数组的二维数组


数组的基本操作
填充替换数组元素:
数组中的元素定义完成后,可通过Arrays类的静态方法fill()来对数组中的元素进行替换
Arrays.fill(arr,8);    //将数组arr中的元素全部替换成8

对数组进行排序:
Arrays.sort(arr);    //将数组arr中的元素进行升序排序

复制数组:
复制数组至指定长度
copyOf(arr,int newArrLenght);    //arr:复制的数组名  newArrLenght:复制后的新数组长度
将指定数组的指定长度复制到一个新数组
copyOfRange(arr,int formIndex,int toIndex);    //arr:复制的数组名 formIndex:开始复制的数组元素索引(包含)   toIndex:复制的结束索引(不包含)

数组查询:
使用二分搜索法来搜索指定数组
binarySearch(arr,Object key);    //arr:要搜索的数组  key:要搜索的值   该方法返回搜索值的索引,没有则返回-1


数组排序算法
冒泡排序:对比相邻的元素,满足条件就交换位置;把较小的元素移到前面,大的移到后面
for(int i =1;i<arr.length;i++) {
        for(int y = 0; y < arr.length-i;y++) {
                if (arr[y]<arr[y+1]) {
                        int temp = arr[y];
                        arr[y] = arr[y+1];
                        arr[y+1] = temp;
                }
            }
    }


直接选择排序:用指定元素和数组中所有元素对比,满足条件时就交换位置(指定元素排好之后就是最大(小)的)
for(int i = 1;i<arr.length;i++){
        int index = 0;
                for(int j = 1;j<=arr.length-i;j++) {   
//每次循环找出数组中最大数arr[index]
                        if (arr[j]>arr[index]) {
                        index = j;
                    }
                }
        int temp = arr[arr.length-i];
        arr[arr.length-i] = arr[index];
        arr[index] = temp;
        }
}

反转排序:第一个元素与最后一个元素交换位置;第二个元素与倒数第二个元素交换位置;以此类推
int len = arr.length/2;
        for(int i =0;i<len;i++) {
            int temp = arr[i];
            arr[i] = arr[arr.length-1-i];
            arr[arr.length-1-i] = temp;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值