一維、二維 數組的應用

一、已知數組及其值(一維數組)

        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));
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章