1. 程式人生 > >常見的數組類型題

常見的數組類型題

將不 code 數組合並 [1] col 輸出 continue 每次 i++

1.將一個給定的整型數組轉置輸出,

源數組為:1 2 3 4 5 6
轉置之後輸出的數組為:6 5 4 3 2 1

剛看到題目的時候沒多想,只想著能倒著輸出就好(正確代碼錯誤想法)

public  static void main(String[] args){
        int[] a={1,2,3,4,5,6};
        System.out.println("原數組為:");
        for(int i=0;i<a.length;i++){
            System.out.println(a[i]);
        }
        System.out.println(
"倒序輸出之後數組為:"); for(int i=a.length-1;i>=0;i--) { System.out.println(a[i]); } }

運行後:6 5 4 3 2 1,但是發現需要轉置數組,然後又整理下思路:

思路:讓數組的a[0]和a[5]交換位置,a[1]和a[4]交換位置,a[2]和a[3]交換位置,然後輸出出來即可。代碼如下:(錯誤的思路,考慮不全面)

public static void main(String[] args) {
                  
int[] a = {1, 2, 3, 4, 5, 6}; int[] b = new int[6]; int i,j; for ( i = 5; i >= 0; i--) { for ( j = 0; j <= 5; j++) { b[j] = a[i]; } }
for ( j= 0; j<=5;j++){ System.out.println(b[j]); } }

輸出結果為:1 1 1 1 1 1

接下來又重新認真想了一下錯誤,發現是沒註意每次循環都輸出六次,然後給每一個值附了六次值所造成的。然後就想到了用冒泡排序的方法進行多次比較將這個數組按從大到小的順序排列,然後再遍歷輸出代碼如下:

public  static void main(String[] args){
        int[] a={1,2,3,4,5,6};
        
        for(int i=0;i<a.length;i++)
        {
            for(int j=0;j<a.length-1;j++){
                if(a[j]<a[j+1]){
                    int temp=0;
                    temp=a[j+1];
                    a[j+1]=a[j];
                    a[j]=temp;
                }
            }
        }
        for(int i=0;i<a.length;i++){
            System.out.println(a[i]);
        }
        
    }    

2.現在有如下的一個數組:int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;

要求將以上數組中值為0的項去掉,將不為0的值存入一個新的數組,生成的新數組為:int[] newArr = {1,3,4,5,6,6,5,4,7,6,7,5} ;

思路:通過continue語句,當oldArr[i]==0時跳出該循環將為零的項去除

public static void main(String[] args) {
                int[] oldArr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
                int[] newArr=new int[oldArr.length];
                int j=0;
                
                System.out.print("oldArr:");
                for(int i=0;i<oldArr.length;i++){
                    System.out.print(oldArr[i]);
                }
                
                for(int i=0;i<oldArr.length;i++){
                    
                    if(oldArr[i]==0){
                        continue;//當oldArr[i]=0為零時跳出循環,並且不再執行該判斷語句下面的所有語句
                    }
                    
                    newArr[j]=oldArr[i];
                    j++;
                }
                
                System.out.println();
                System.out.print("newArr:");
                for(int m=0;m<j;m++){
                    //j為新數組的長度
                    System.out.print(newArr[m]);
                }
             }
    

輸出結果:

oldArr:1345006605476705
newArr:134566547675

3.現在給出兩個數組:數組a:"1,7,9,11,13,15,17,19" 數組b:"2,4,6,8,10" 現將兩個數組合並為數組c。

思路:數組a,b長度之和為數組c的長度,將數組a的值賦給c之後,c中第a.length+1為b[0],此處用常量n來計數

public static void main(String[] args){
        int[] a={1,3,5,7,9,11,13,15,17,19};
        int[] b={2,4,6,8,10};
        int m=a.length+b.length;
        int[] c=new int[m];
        int n=0;
        System.out.print("數組a:");
        for (int i = 0; i < a.length; i++){
            System.out.print(a[i]+"  ");
        }
        System.out.println();
        System.out.print("數組b:");
        for (int i = 0; i < b.length; i++){
            System.out.print(b[i]+"  ");
        }
        
        for(int i=0;i<a.length;i++){
            c[i]=a[i];
            n++;
        }
        for(int j=0;j<b.length;j++){
            c[n++]=b[j];
        }
        System.out.println();
        System.out.print("合並數組:");
        for(int i=0;i<c.length;i++){
            System.out.print(c[i]+" ");
        }
        
        
    }

輸出結果:

數組a:1  3  5  7  9  11  13  15  17  19  
數組b:2  4  6  8  10  
合並數組:1 3 5 7 9 11 13 15 17 19 2 4 6 8 10 

常見的數組類型題