2017-11-18 6 views
0

どのようにテーブルの半分だけを反転できますか?例: 私は:TAB = {1,2,3,4,5,6}を持っており、TAB2:{1,2,3,6,5,4}を取得したいと考えています。各半分のための2つの別々の配列を作るタブの半分だけを逆にする方法は?

int tmpl; 
    int l = tab2.length; 
    int pol = l/2; 

    for (int i = 0; i <= pol; i++){ 
     tmpl = tab2[i]; 
     tab2[i] = tab2[l-1-i]; 
     tab2[l-1-i] = tmpl; 
    } 
+0

ループを「l-1」で開始し、最後まで繰り返します – QBrute

答えて

1

は今、私はこのようなすべてのタブをREVERS。

public static int[] splitArray(int start, int end, int[] array) 
{ 
    int[] newArray = new int[array.length/2]; 
    int j = 0; 
    for (int i = start; i < end; i++) 
    { 
     newArray[j] = array[i]; 
     j++; 

    } 
    return newArray; 
} 

配列を逆にする方法があります。各配列を渡します。

public static int[] reverseArray(int[] array) 
{ 
    int[] newArray = new int[array.length]; 
    int j = 0; 
    for (int i = array.length - 1; i >= 0; i--) 
    { 
     newArray[j] = array[i]; 
     j++; 
    } 
    return newArray; 
} 

ここで2つの配列を結合します。

public static int[] combineArrays(int[] array1, int[] array2) 
{ 
    int j = 0; 
    int[] combinedArray = new int[array1.length + array2.length]; 
    for (int i = 0; i < array1.length; i++) 
    { 
     combinedArray[j] = array1[i]; 
     j++; 
    } 
    for (int i = 0; i < array2.length; i++) 
    { 
     combinedArray[j] = array2[i]; 
     j++; 
    } 
    return combinedArray; 
} 

メインメソッドの外観。

public static void main(String[] args) 
{ 
    int[] TAB = { 1, 2, 3, 4, 5, 6 }; 
    int[] split1 = splitArray(0, TAB.length/2, TAB); 
    int[] split2 = splitArray(TAB.length/2, TAB.length, TAB); 
    split1 = reverseArray(split1); 
    split2 = reverseArray(split2); 
    int[] TAB2 = combineArrays(split1, split2); 
    for (int i = 0; i < TAB2.length; i++) 
    { 
     System.out.println(TAB2[i]); 
    } 


} 
関連する問題