当前位置:   article > 正文

二维数组的定义和使用以及冒泡排序_二维数组的定义与使用

二维数组的定义与使用

一、二维数组的定义和使用

1、定义

首先讲一讲二维数组的理解,其实二维数组就是一些一维数组的嵌套,可以把二维数组的每一行看作一个内层的一维数组。

2、二维数组的内存结构图

 

3、、初始化形式

二维数组与一维数组一样,同样是有两重初始化形式,一种是动态初始化,一种是静态初始化。

形式1、动态初始化。

格式:数据类型 数组名 [ ][ ] = new 数据类型[m][n];
           数据类型 [ ][ ]  数组名 = new 数据类型[m][n];
           数据类型 [ ]   数组名 [ ] = new 数据类型[m][n];

m,n是变量,比如:int arr [ ] [ ] = new int [3][4];也可以理解为三行四列。

形式2、静态初始化。

格式:数据类型 [ ][ ]   数组名 = {{元素1,元素2....},{元素1,元素2....},{元素1,元素2....}.....};

元素一、元素二......指的是一些常量

如:{1,1,1,1}   , {2, 2, 2, 2}等等;

4、代码演示

例:定义一个4行4列的二维数组,将对角线的值赋为1,其他为0

public class text2 {
    public static void main(String[] args) {
        //静态初始化赋值
        int [][] arr = {{1,0,0,1}
                       ,{0,1,1,0},
                        {0,1,1,0},
                        {1,0,0,1}};
        // 用嵌套for循环进行遍历,输出数组的值。
        for(int i = 0; i<arr.length; i++){
            for(int j = 0; j < arr[i].length; j++){
                System.out.print(arr[i][j] + "   ");
            }
            System.out.println();
        }
    }
}

5、总结

二维数组就是嵌套的一维数组,数组的元素从一些值变成一维数组,由一堆的一维数组组成了二维数组,同样也是运用for循环进行遍历,但是需要嵌套for循环遍历打印。

二、冒泡排序

1、冒泡排序原理

 冒泡排序法是一种交换排序方法,其过程是首先将第一个记录的键值和第二个记录的键值进行比较,若为逆序,则将这两个记录交换,然后继续比较第二个和第三个记录的键值,以此类推,直到完成第n-1个记录和第n个记录的键值比较交换位置,此为一趟冒泡。要完成一组数字的排序就需要进行多次这样的冒泡。

2、排序步骤

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。(所以在代码中需要注意arr.length -1)
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

3、演示图

 4、代码演示

从小到大的排序:

public class bubble {
    public static void main(String[] args) {
                //冒泡排序算法
                int[] numbers = new int[]{1, 5, 8, 2, 3, 9, 4};
                //需进行length-1次冒泡
                for (int i = 0; i < numbers.length - 1; i++) {
                    //每完成一次冒泡后减少一次循环;
                    for (int j = 0; j < numbers.length - 1 - i; j++) {
                        if (numbers[j] > numbers[j + 1]) {
                            //用一个temp作为中间值来完成交换的存储;
                            int temp = numbers[j];
                            numbers[j] = numbers[j + 1];
                            numbers[j + 1] = temp;
                        }
                    }
                }
                System.out.println("从小到大排序后的结果是:");
                //遍历数组打印输出;
                for (int i = 0; i < numbers.length; i++)
                    System.out.print(numbers[i] + " ");
    }
}

那么从大到小只需要改变一下方向即可,就是把if条件语句里面的大于改为小于,就改变了排序方向。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/319702
推荐阅读
相关标签
  

闽ICP备14008679号