数组(1)

        数组是由若干项数据组成的一个数据集合,数组中每个数据称为元素。

1、数组的声明和创建

        1.1、数组的声明

        数据类型  标识符[ ]        或者      数据类型[ ]  标识符

        1.2、数组的创建

        使用new关键字创建,创建的时候需要指明数组的长度。创建数组时,在堆区为数组分配内存空间,为每个元素赋对应数据类型的默认值。

        1.3、数组的初始化

        在创建数组时,每个元素都被自动使用默认值初始化。所有变量的初始化是系统安全的保证,决不能在变量未初始化的状态使用。

        1.4、内存的分配

        数组一旦创建,在内存中占用连续的内存地址。

        数组的静态性:数组一旦被创建,长度就不能被改变。

2、数组的访问

        2.1、length属性

        所有的下标都从0开始,一个数组中元素的数量被length存储。这个值用来检查访问的界限。数组的下标范围为:0——length-1。

        2.2、数组的for语句

        标识符.for:快速遍历数组的值

        标识符.fori:从0到length-1的for循环

        标识符.forr:从length-1到0的for循环

3、数组的复制

        数组一旦创建后长度不可修改。只能通过创建新的数组来保证长度。

        System.arraycopy(原数组,起始下标,新数组,起始下标,复制内容的长度)

4、Arrays常用方法

        Arrays.toString(数组)将数组转换为字符串

        Arrays.equals(数组a,数组b)判断两数组内容是否相等

        Arrays.fill(数组,数据参数)将整个数组全部填充为同一内容

        Arrays.binarySearch(数组,数据参数)判断某一参数是否存在,存在返回下标,不存在返回负数

        Arrays.sort(数组) 对原数组从小到大进行排序,无返回值。

        Arrays.copyOf(原数组,新数组长度)将源数组复制并赋值给新数组,返回一个新长度的数组,如果长度大于源数组,超出部分为默认值。如果长度小于源数组,只赋值源数组的前n位。

        Arrays.copyOfRange(数组,int from,int to)从源数组的from下标开始复制到下标to-1位置。返回一个新数组。与copyOf相比,可以调节复制的长度及位置。

5、数组的排序

       5.1、冒泡排序

        从始到终两两比较,如果逆序(非指定顺序)的交换,每一轮比较会筛选出最大值(最小)然后循环执行。

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

        for ( int i  =  0  ;  i < a.length - 1 ; i + +) {//两两比较,共计循环4次

                for ( int  j = 0 ; j  < a.length - 1 - i ; j + + ){//获取下标,最小为0,最大为4。j和j+1

                        if ( a [ j ] > a [ j + 1 ]){//判断是否为逆序,如果逆序则交换

                                int temp = a[j];   a[j]= a[j+1] ;   a[j+1] =temp;  //用一个变量使两个值交换

                        }

                }

        }

        5.2、选择排序

        从所有元素中找出最小的一个元素放在起始位置,其次找第二小的元素。与冒泡相比,与此排的比较次数相同,但是选择排序每轮只交换一次。效率更高。

        int [ ]  a  =  { 3 ,4 ,2 ,5 ,1 } ; int temp;

        for ( int  i = 0 ;  i < a.length - 1 ; i + + ){//两两比较

                int lowindex = i ;//声明最小的下标

                for ( int j = i + 1 ;  j < a .length ; j + +){//从第i+1比到第length-1个。

                        if( a[ j ] < a[lowindex]) lowindex = j ;//取最小值的索引

                }

                temp = a[i];  a[i] = a[lowindex];  a[lowindex] = temp;  //将lowindex和i交换

        }

        5.3、插入排序

        从前向后依次增加长度排序,每次需要保证前边的顺序正确。

        int [ ]  a  =  { 3 ,4 ,2 ,5 ,1 } ; int temp;

        for ( int  i = 1 ;  i <  a.length ; i + + ){//从第二个数字开始比较,到最后一个。

                for ( int j = i ; j > 0 && a[ j ] < a [ j - 1 ] ; j - -){//如果后边的数字大于前边的,就循环交换

                        temp = a[j] ; a[j] =a[ j-1] ; a[j-1] =temp; //交换

                }

        }

        其他排序方式写在(2)中

6、多维数组

        n维数组就是1个n-1维数组组成的数组,比如二维数组就是一个一维数组组成的数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值