arrrays类,冒泡排序、稀疏数组

Arrays类

在JDK帮助文档打开
代码样例:输出一组数组
1、_//打印数组元素Arrays.toString
_System.out.println(Arrays.toString(a));

package com.array;

import java.util.Arrays;

public class ArrayDoment03 {
    public static void main(String[] args) {
        int[] a = {1,23,54,78,98,986756};

        //打印数组元素Arrays.toString
        System.out.println(Arrays.toString(a));//打印输出方法一
        printArrays(a);
    }
    public static void printArrays(int [] a){//打印输出方法二
        for (int i = 0; i < a.length; i++){
            if(i==0){
                System.out.print("[");
            }
            if(i==a.length-1){
                System.out.print(a[i]+"]");
            }
            else {
                System.out.print(a[i]+","+" ");
            }
        }

    }
}

输出结果:

[1, 23, 54, 78, 98, 986756]
[1, 23, 54, 78, 98, 986756]

2、给数组元素排序(对数组排序通过sort方法)
Arrays.sort(a);
System.out.println(Arrays.toString(a));
代码样例:给一组数组排序

package com.array;

import java.util.Arrays;

public class ArrayDoment03 {
    public static void main(String[] args) {
        int[] a = {445,23,89,78,98,986756};
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));

    }
   }

输出结果;

[23, 78, 89, 98, 445, 986756]

3、填充元素(给数组赋值通过fill方法)
Arrays.fill(a,2,4,0);_//2到4之间的数组填充为0
_System.out.println(Arrays.toString(a));
代码样例:2到4之间的数组填充为0

package com.array;

import java.util.Arrays;

public class ArrayDoment03 {
    public static void main(String[] args) {
        int[] a = {445,23,89,78,98,986756};
         Arrays.fill(a,fromindex:2,toindex:4,val:0);//2到4之间的数组填充为0
        System.out.println(Arrays.toString(a));

    } 
   }

输出结果:

[445, 23, 0, 0, 98, 986756]

4、比较元素(比较数组通过equals方法比较数组中元素是否相等)
Arrays.equals(a,a1);
System.out.println("aa1:"+(aa1));
System.out.println(“Arrays.equals(a,a1):”+Arrays.equals(a,a1));
代码样例:比较数组a和数组a1

package com.array;

import java.util.Arrays;

public class ArrayDoment03 {
    public static void main(String[] args) {
        int[] a = {445,23,89,78,98,986756};
        int[] a1 ={445,23,89,78,98,986756};
        Arrays.equals(a,a1);
        System.out.println("a==a1:"+(a==a1));
        System.out.println("Arrays.equals(a,a1):"+Arrays.equals(a,a1));
    }
    
  }

输出结果:

a==a1:false
Arrays.equals(a,a1):true

5、二分数组查找下标:(binarysearch方法查找数组下标)
int[] sort = new int[]{445,23,89,78,98,986756};
int index = Arrays.binarySearch(sort,89);
System.out.println(“89的下标是:”+index);
代码样例:输出89的下标

package com.array;

import java.lang.reflect.Array;
import java.util.Arrays;

public class ArrayDoment03 {
    public static void main(String[] args) {
        int[] sort = new int[]{445,23,89,78,98,986756};
        int index = Arrays.binarySearch(sort,89);
        System.out.println("89的下标是:"+index);
 }
}

输出结果:

冒泡排序

代码样例:

扫描二维码关注公众号,回复: 15232954 查看本文章
package com.array;

import java.lang.reflect.Array;
import java.util.Arrays;

public class ArrayDomen07 {
    public static void main(String[] args) {
        //冒泡排序;要烂熟于心
        int[] a ={23,34,45,67,2,12,5,87,98,2345};//程序执行第一步:将实参传入给形参

        int[] sort = sort(a);//程序执行第四步:调用序方法以后,返回一个排序后的数组
        //调用完我们写的排序方法以后,返回一个排序后的数组
        System.out.println(Arrays.toString(sort));//程序执行第五步:得出结果;
        //让这里可以输出

    }
    public static int [] sort(int[] array){//程序执行第二步:将数据传入后,然后在方法体中调用
        int temp = 0;
        //外循环数组需要排列的次数
        for (int i = 0; i < array.length-1; i++){
            //内循环比较数组元素中两个数的大小,然后依次循环输出
            for (int j = 0; j < array.length-1-i; j++){
                if (array[j+1]>array[j]){
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                }
            }
        }
        return array;//程序执行第三步:得出结果后将数据返回给数组sort
    }
}

输出结果:

[2345, 98, 87, 67, 45, 34, 23, 12, 5, 2]

稀疏数组

什么是稀疏数组;
当一个数组中大部分元素为0,或者为同一值得数组时,可以使用稀疏数组来保存 该数组。
稀疏数组的处理方式是:
1、记录数组有几行几列,有多少个不同值
2、把 具有不同值得元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模

代码:没有作压缩之前

package com.array;

public class ArrayDomeno4 {
    public static void main(String[] args) {
        int[][]  a = new int[11][11];
        a[1][2]=1;
        a[2][3]=2;

        for (int[] ints : a) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
    }
}

结果:

0	0	0	0	0	0	0	0	0	0	0	
0	0	1	0	0	0	0	0	0	0	0	
0	0	0	2	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	

转换为稀疏数组之后:

package com.array;

public class ArrayDomeno4 {
    public static void main(String[] args) {
        int[][] a = new int[11][11];
        a[1][2] = 1;
        a[2][3] = 2;
        
        System.out.println("输出原始数组:");
        for (int[] ints : a) {
            for (int anInt : ints) {
                System.out.print(anInt + "\t");
            }
            System.out.println();
        }
        System.out.println("===========================");
        //转换成稀疏数值保存
        //1、获取有效值的个数
        int sum = 0;
        for (int i = 0; i < 11; i++){
            for (int j = 0; j < 11; j++){
                if (a[i][j]!=0){
                    sum++;
                }
            }
        }
        System.out.println("有效值为:"+sum);
        //2、创建一个稀疏数组的数组
        int[][] a2 = new int[sum+1][3];
        a2[0][0] = 11;
        a2[0][1] = 11;
        a2[0][2] = sum;

        //3、遍历二维数组,将非零的值,放到稀疏数组中
        int count = 0;
        for (int i = 0; i < a.length; i++){
            for (int j = 0; j < a[i].length; j++){
                if(a[i][j]!=0) {
                    count++;
                    a2[count][0] = i;//从第几行第一列存放他的第一个数值
                    a2[count][1] = j;
                    a2[count][2] = a[i][j];
                }
            }
        }
        //输出稀疏数组;
        System.out.println("稀疏数组");

        for(int i = 0; i < a2.length; i++){
            System.out.println(a2[i][0]+"\t"+a2[i][1]+"\t"+a2[i][2]+"\t");

        }
    }
}

输出结果:

输出原始数组:
0	0	0	0	0	0	0	0	0	0	0	
0	0	1	0	0	0	0	0	0	0	0	
0	0	0	2	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
===========================
有效值为:2
稀疏数组
11	11	2	
1	2	1	
2	3	2	

猜你喜欢

转载自blog.csdn.net/m0_65792710/article/details/125582839
今日推荐