数组,排序方法

走远了吗. 提交于 2019-11-27 15:41:00

数组

概念:存储数据的容器

## 一、 特点
1、只能存储同一种数据类型
2、长度固定
3、直接打印数组名,打印的结果是数组在堆内存中的地址
4、数组创建后,都会根据其数据类型赋予默认值

    整型:0
    浮点型:0.0
    布尔型:false
    字符型:\u0000 控制台中以一个空格显示
    其他(引用数据类型): null

## 二、 创建

[]的位置可以放在数据类型之后,也可以放在数组名之后
### 2.1 静态创建
    格式:
    数据类型 [] 数组名 = new 数据类型 []{元素1、元素2、、、、};
        
    变形:
    数据类型 [] 数组名 =  {元素1、元素2、、、、};

    注:当编码完成时,数组长度固定,在编译运行期间,不能再对数组进行改动,即不能对数组元素进行增删


    ### 2.2 动态创建
        格式:
            数据类型 [] 数组名 = new 数据类型 [长度];

## 三、数组中元素的获取、赋值

格式:
    数组名[下标]

下标:索引、角标,  范围是 0~长度-1

获取数组的长度: 数组名.length  例如 arr.lengths
赋值:数组名[下标] = 值;


## 四、 遍历
1、借助Arrays工具类的toString(),将数组以字符串的形式输出

2、循环遍历

    int arr[] = {x,x,x,x,x,x};
    for(int i = 0 ; i < arr.lenght; i++){
        //输出
        System.out.println(arr[i]);
    } 


## 五、 存在的问题

1、ArrayIndexOutofBoundsException, 数组下标越界异常
    数组的下标的范围是0~长度-1,不在这个区间内,都会发生异常

注意下标要在合理的范围内


2、NullPointerException, 空指针异常

    数组对象没有new过就使用



## 六、 数组排序
### 6.1 冒泡排序
    即相邻元素作比较,满足交换条件则交换,得到当前最值
    找第一个最值时,不能省略次数
     找第二个最值是,可以省略一次
     找第三个最值时,可以省略两次
     。。。。。

    int [] arr = {12,53,23,87,66,54,88};
    int temp = 0;
    for (int i = 0; i < arr.length-1; i++) {
        for(int j = 0; j < arr.length-1-i; j++){
            if(arr[j]<arr[j+1]){
                temp = arr[j+1];
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
            
        }
        
    }



    ### 6.2 选择排序
    1、从第一个元素开始,将每一个与后续的所有元素进行比较
     2、当得到最值时,与第一个元素进行交换
    3、在剩下还未排序的元素中,从第一个元素开始
    将每个元素与后续的所有元素进行比较
    当得到最值是,与当前的第一个元素进行交换

        int [] arr = {99,88,77,66,55,44,33,22,11};
        int temp;
        int minIndex;
        for (int i = 0; i < arr.length-1; i++) {
            minIndex = i;
            for(int j = i+1;j< arr.length;j++){
                if(arr[minIndex] > arr[j]){
                    minIndex = j;
                }
            }
            temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
            System.out.println(Arrays.toString(arr));
        }

二维数组

概念:存储数组元素的数组,即每个元素都是一个数组

    ## 一、创建
        1、
        数据类型 [][] 数组名 = new shu数据类型[①][②];

        ①:二维数组的长度
        ②:每一个小数组的长度

        2、数据类型[][]数组名 = new 数组类型[①][];


        3、数据类型[][] 数组名 = {}
            {元素1,元素2,。。。。。},
            {元素1,元素2,。。。。。},
            {元素1,元素2,元素3.。。。。}

        };
        这种方式创建的二维数组中的小数组要单独创建
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!