一维、二维 数组的应用

一、已知数组及其值(一维数组)

        int[] a = new int[5];
        a[0] = (int) (Math.random() * 100);
        a[1] = (int) (Math.random() * 100);
        a[2] = (int) (Math.random() * 100);
        a[3] = (int) (Math.random() * 100);
        a[4] = (int) (Math.random() * 100);
        
         for (int   i = 0; i < a.length; i++) {
			System.out.print("a数组:" + a[i]+" ; ");
        }

1.求出随机数组中的最小值

        //求出随机数组最小值
        
        //设置一个标识
  		int flag = 100;  
        for (int i = 0; i <a.length; i++) {
       			 //把数组每个值依次赋值给中间变量
      			 int val = a[i];  
      			 //如果中间变量小于标识,就把值赋值给标识
		       	 if (val < flag) {
					flag = val ;
				}
		}
         System.out.println("本练习的目的是,找出最小的一个值: "+ tag); 

2.反转随机数组

        //反转随机数组
        //反转数组的次数为数组长度的一半
		for (int i = 0; i < a.length/2; i++) {
			//最右边值赋值给中间变量
			int val= a[a.length-i-1];
			//最左边值赋值给最右
			a[a.length-i-1] = a[i];
			//最右边值赋值给最左
			a[i] = val;
		}

3.排序随机数组,

		/*
		*正序排序,从小到大
		*/
		//使用两层循环,方便比较排序
        for(int i=0;i<a.length;i++){
            for(int j=i+1;j<a.length;j++){
            	//比较两个紧邻数值
                if(a[i] > a[j]){ // 如果左侧数据值较大
                    int val = a[j]; //右侧数值赋值给中间变量
                    a[j]=a[i];  //左侧较大的 赋值给右侧
                    a[i]=val;  // 使用中间变量把较小右侧值赋值给左侧
                }
            }
            
        }
     /**
      * 数组倒排序
      * */ 
        for (int i = 0; i < a.length; i++) {
			for (int j = i+1; j < a.length; j++) {
				if(a[i] < a[j]) {
					int val = a[j];
					a[j] = a[i];
					a[i] = val;
				}
			}
		}

4.使用增强for求出随机数组最大值

        /*
         * 使用增强for 求出最大值
         * */
        int max = 0 ;
        for (int each : a) {
			if(each > max) {
				max = each;
			}
				
		}
      System.out.println(max);

5.合并数组


```java
        	/**
        	 * 合并数组
        	 * */
    	//1.创建数组
        int [] a = new int [5];
        int [] b = new int [5];
       //2.使用for循环给两个随机数组赋值
        for (int i = 0 ; i < a.length; i++ ) {
			a[i] = (int) (Math.random()*100);
			b[i] = (int) (Math.random()*100);
		}
        //3.输出两个数组的值
        System.out.print("a数组的值:");
        for (int each : a) {
        	System.out.print( each +" , ");
		}
        System.out.println();
        System.out.print("b数组的值:");
        for (int each : b) {
        	System.out.print( each +" , ");
		}
        //4.创建第三个数组,长度为,上面两个数组和
        int [] c = new int[a.length + b.length];
        //5-1.使用System.arraycopy()方法 合并第一个数组
        System.arraycopy(a, 0, c, 0, a.length);
        //5-2.使用System.arraycopy()方法 合并第一个数组
        System.arraycopy(b, 0, c, a.length, b.length);
        //6.输出打印合并后的数组
        System.out.println();
        System.out.print("c数组的值:");
        for (int i : c) {
			System.out.print(i+" , ");
		}

## 二、二维数组

       	/*
    	 * 二维数组
    	 * 1.创建一个二维数组
    	 * 2.使用随机数,给二维数组赋值
    	 * 3.设置随机数格式为5x5
    	 * 4.找出二维数组中,最大随机数
    	 * 5.找出最大随机数所在坐标
    	 * */
    	//1.创建一个二维数组
    	int [][] a = new int [5][5];
    	//2.使用随机数,给二维数组赋值
    	for(int i=0;i<a.length;i++)
            for(int j=0;j<a[i].length;j++)
            {
    		   a[i][j] = (int)(Math.random()*100);
            }
    	//3.设置随机数格式为 5x5
    	for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a.length; j++) {
				System.out.print(a[i][j]+ "  ");
				if (j == 4) {
					System.out.println();
				}
			}
		}
    	//4.找出二维数组中,最大随机数
    	int flag = 0;
    	int x = 0 ;
    	int y = 0 ;
    	for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[i].length; j++) {
				if(flag < a[i][j]) {
					flag = a[i][j];
					//5.找出最大随机数所在坐标
					x = i ;
					y = j ;
				}
			}
		}
    	System.out.println("找出最大值:" + flag);
    	System.out.println("坐标为       :"+(x+1) +"||"+(y+1));

1.二维数组转换成一维数组

			/**
			*System.arraycopy()方法把二维数组的值 复制给一维数组
			*src:要复制的数组(源数组)
			*srcPos:复制源数组的起始位置
			*dest:目标数组
			*destPos:目标数组的下标位置
			* length:要复制的长度
			*
			*/
             for (int i =0; i<a.length; i++){
    		//使用Arrays.toString()方法转换,输出效果好看
            System.out.println(Arrays.toString(a[i]));
            System.arraycopy(a[i],0,b,i*a[0].length,a[0].length);
        }

2,数组排序

				/*
				* 注释:Arrays.sort():
				* 1.支持升序排序
				* 2.支持局部升序
				* 3.自定义排序
				*/
				int [] b = {5,2,7,4,8,1};
				//默认升序排序
				Arrays.sort(b);
				//局部排序
				Arrays.sort(b,2,4);
		   		Integer[] arr = {5,4,7,9,2,12,54,21,1};
		        //降序
		        Arrays.sort(arr, new Comparator<Integer>() {
		            public int compare(Integer a, Integer b) {
		                return b-a;
		            }
		        });
		        System.out.println(Arrays.toString(arr));    
		    }   

3.搜索

    public static void main(String[] args) {
    	Integer [] a = {1 , 4 , 9 , 9 , 5, 3, 8};
    	//
    	Arrays.sort(a, new Comparator<Integer>() {
			@Override
			public int compare(Integer o1, Integer o2) {
				return o1 - o2;
			}
		});
    	//
    	System.out.println(Arrays.toString(a));
    	//获取指定元素坐标
    	System.out.println(Arrays.binarySearch(a, 9));

4.判断内容是否相同

        int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
        int b[] = new int[] { 18, 62, 68, 82, 65, 8 };
 
        System.out.println(Arrays.equals(a, b));

5.数组复制

      int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
 
        // copyOfRange(int[] original, int from, int to)
        // 第一个参数表示源数组
        // 第二个参数表示开始位置(取得到)
        // 第三个参数表示结束位置(取不到)
        int[] b = Arrays.copyOfRange(a, 0, 3);
 
        for (int i = 0; i < b.length; i++) {
            System.out.print(b[i] + " ");
        }

6.填充

       int a[] = new int[10];
  
        Arrays.fill(a, 5);
  
        System.out.println(Arrays.toString(a));

你可能感兴趣的:(Java基础,数据操作)