2015-09-23 2 views
0

Я работал над этим, но когда я вхожу в матрицу, все элементы в матрице сортируются! Но я хочу сортировать только граничные элементы в порядке возрастания. Может ли какой-нибудь орган рассказать мне свою ошибку?Как отсортировать граничные элементы матрицы в порядке возрастания?

int k,temp=0,sum=0; 

      k=n; 
     boolean b=true; 
     do 
     { 
     for(i=0;i<m;i++) 
     { 
      for(j=0;j<k-1;j++) 
      { 
       if(i!=0||j!=0) 
       { 
        if(A[i][j]>A[i][j+1]) 
        { 
         temp=A[i][j]; 
         A[i][j]=A[i][j+1]; 
         A[i][j+1]=temp; 
        } 
       } 
      } 
     } 
     k-=1; 
     if(k<0) 
     b=false; 
    }while(b); 
    k=m; 
    do 
    { 
    for(i=0;i<k-1;i++) 
    { 
     for(j=0;j<n;j++) 
     { 
      if(i!=0||j!=0) 
      { 
       if(A[j][i]>A[j][i+1]) 
       { 
        temp=A[j][i]; 
        A[j][i]=A[j][i+1]; 
        A[j][i+1]=temp; 
       } 
      } 
     } 
    } 
    k-=1; 
    if(k<0) 
    b=false; 
}while(b); 
System.out.println("REARRANGED MATRIX:"); 
for(i=0;i<m;i++) 
     { 
      for(j=0;j<n;j++) 
      { 
       System.out.print(A[i][j]+" "); 
      } 
      System.out.println(); 
     } 

ответ

0

Вместо того, чтобы использовать условие 'если (я! = 0 || J! = 0)' использование «, если (я == 0 || я == 2 || J == 0 || J == 2) '. Это может решить неоднозначность, которую вы имеете. Ваша ошибка заключалась в том, что вы взяли число строк и столбцов как больше нуля. Пограничными элементами являются те, где число строк равно 0 или 2 или число столбцов - 0 или 2 (под этим я подразумеваю, что в качестве граничных элементов будут считаться только те элементы, которые имеют координаты с i = 0 или i = 2 или j = 0 или j = 2. matrix coordinates

0

У меня есть один Я использовал сортировку сортировки для этого. Сначала я отсортировал матрицу, а затем отобразил границу отсортированного массива

import java.io.*; 

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

     System.out.println("Enter the rows of the matrix="); 
     int m = Integer.parseInt(br.readLine()); 

     System.out.println("Enter the column of the matrix="); 
     int n = Integer.parseInt(br.readLine()); 

     int a[][] = new int[m][n]; 

     int i,j; 
     System.out.println("Enter the elements of the matrix: "); 

     for(i = 0; i < m; i++) 
     { 
      for(j = 0; j < n; j++) 
      { 
       a[i][j]=Integer.parseInt(br.readLine()); 
      } 
     } 

     System.out.println("**********************"); 
     System.out.println("The original matrix is"); 
     System.out.println("**********************"); 

     for(i = 0; i < m; i++) 
     { 
      for(j = 0; j < n; j++) 
      { 
       System.out.print(a[i][j]+"\t"); 
      } 

      System.out.println(); 
     } 

     int B[] = new int[m*n]; //creating a 1D Array of size 'r*c' 
     int x = 0; 

     for(i = 0; i < m; i++) 
     { 
      for(j = 0; j < n; j++) 
      { 
       B[x] = a[i][j]; 
       x++; 
      } 
     } 

     /*Sorting the 1D Array in Ascending Order*/ 
     int t = 0; 

     for(i = 0; i < (m * n) - 1; i++) 
     { 
      for(j = i + 1; j < (m * n); j++) 
      { 
       if(B[i] > B[j]) 
       { 
        t = B[i]; 
        B[i] = B[j]; 
        B[j] = t; 
       } 
      } 
     } 

     /*Saving the sorted 1D Array back into the 2D Array */ 
     x = 0; 

     for(i = 0; i < m; i++) 
     { 
      for(j = 0; j < n; j++) 
      { 
       a[i][j] = B[x]; 
       x++; 
      } 
     } 

     /* Printing the sorted 2D Array */ 
     System.out.println("**********************"); 
     System.out.println("The Sorted Array:"); 
     System.out.println("**********************"); 

     for(i = 0; i < m; i++) 
     { 
      for(j = 0; j < n; j++) 
      { 
       System.out.print(a[i][j]+"\t"); 
      } 

      System.out.println(); 
     } 

     System.out.println("**********************"); 
     System.out.println("The boundary elements of the matrix is="); 
     System.out.println("**********************"); 

     for(i = 0; i < m; i++) 
     { 
      for(j = 0; j < n; j++) 
      { 
       if(i==0 || j==0 || i == m-1 || j == n-1) //condition for accessing boundary elements 
        System.out.print(a[i][j]+"\t"); 
       else 
        System.out.print(" \t"); 
      } 

      System.out.println(); 
     } 
    } 
} 
Смежные вопросы