2015-12-06 4 views
0

Мне нужна помощь в этой задаче, есть три столбца: фаза #, блок # и партия #, мне нужно отсортировать фазу # в порядке возрастания, в то время как остальные два будут отсортированы соответственно его фазы #:сортировка многомерного массива по столбцу в java

Проблема:

Фаза # 1-2-1-3-1-2-1

Блок # 1-1-2-1-2-1-1

Лот № 1-2-2-2-3-1-1

Что это должно быть как:

Фаза # 1-1-1-1-2-2-3

Блок # 1-2-2-1-1-1-1

Лот # 1-2-3-1-2-1-2

вот что у меня до сих пор:

import java.io.*; 
import java.util.*; 

public class test{ 
public static void main(String[] args) throws IOException{ 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

    int x = 7; 
    int y = 3; 
    int[][] phase= new int[x][y]; 
    int swap = 0, temp, i, min = 0; 

    phase[0][0] = 1; 
    phase[1][0] = 2; 
    phase[2][0] = 1; 
    phase[3][0] = 3; 
    phase[4][0] = 1; 
    phase[5][0] = 2; 
    phase[6][0] = 1; 
    phase[0][1] = 1; 
    phase[1][1] = 1; 
    phase[2][1] = 2; 
    phase[3][1] = 1; 
    phase[4][1] = 2; 
    phase[5][1] = 1; 
    phase[6][1] = 1; 
    phase[0][2] = 2; 
    phase[1][2] = 2; 
    phase[2][2] = 2; 
    phase[3][2] = 2; 
    phase[4][2] = 3; 
    phase[5][2] = 1; 
    phase[6][2] = 1; 

    System.out.println("UNSORTED: \n"); 
    System.out.println("Phase#\tBlock#\tLot#"); 
    for(i = 0; i < phase.length; i++){ 
     System.out.print(phase[i][0] + "\t" + phase[i][1] + "\t"+phase[i][2]); 
     System.out.print("\n"); 
    } 

    System.out.println("\nSORTED:\n"); 
    for(i = 0; i <= phase.length- 1; i++){ 
     min = i; 
     for(int a = i+1; a < phase.length; a++){ 
      if(phase[a][0]<phase[a][0]){ 
       temp=phase[i][0]; 
       phase[i][0]=phase[a][0]; 
       phase[a][0]=temp; 
      } 
     } 
    } 
    System.out.println("Phase#\tBlock#\tLot#"); 
    for(int j = 0; j < phase.length; j++){ 
     System.out.print(phase[j][0] + "\t" + phase[j][1] + "\t"+phase[j][2]); 
     System.out.print("\n"); 
    } 

} 

}

ответ

0

Реализовать компаратор интерфейс, как (межд [] left, int [] right) -> left [0] -right [0] и передать его методу Arrays.sort():

Arrays.sort(phase, (int [] left, int[] right) -> left[0]-right[0]); 
+0

спасибо, я попробую^_ ^ –

Смежные вопросы