📌  相关文章
📜  按行交替升序和降序对矩阵进行排序

📅  最后修改于: 2021-09-05 08:32:50             🧑  作者: Mango

给定一个N x N矩阵,我们的任务是以升序和降序交替打印矩阵的行。
例子:

解决方法
为了解决上面提到的问题,我们迭代 0 到 N 并检查第 i 行是偶数还是奇数,如果是偶数,则按升序对行进行排序,否则按降序对第 i 行进行排序。在 N 次迭代后返回矩阵。
下面是上述方法的实现:

C++
// C++ implementation to print row of
// matrix in ascending or descending
// order alternatively
 
#include 
#define N 4
 
void func(int a[][N])
{
 
    // Iterate matrix rowwise
    for (int i = 0; i < N; i++) {
 
        // Sort even rows in ascending order
        if (i % 2 == 0) {
            for (int j = 0; j < N; j++) {
                for (int k = j + 1; k < N; ++k) {
 
                    // compare adjacent elements
                    if (a[i][j] > a[i][k]) {
 
                        // swap adjacent element
                        int temp = a[i][j];
                        a[i][j] = a[i][k];
                        a[i][k] = temp;
                    }
                }
            }
        }
 
        // Sort even rows in descending order
        else {
            for (int j = 0; j < N; j++) {
                for (int k = j + 1; k < N; ++k) {
 
                    // compare adjacent elements
                    if (a[i][j] < a[i][k]) {
 
                        // swap adjacent element
                        int temp = a[i][j];
                        a[i][j] = a[i][k];
                        a[i][k] = temp;
                    }
                }
            }
        }
    }
 
    // Printing the final Output
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
}
 
// Driver code
int main()
{
 
    int a[N][N] = {
        { 5, 7, 3, 4 },
        { 9, 5, 8, 2 },
        { 6, 3, 8, 1 },
        { 5, 8, 9, 3 }
    };
 
    func(a);
 
    return 0;
}


Java
// Java implementation to print row of
// matrix in ascending or descending
// order alternatively
class GFG{
     
static int N = 4;
 
static void func(int a[][])
{
    int i, j, k;
     
    // Iterate matrix rowwise
    for(i = 0; i < N; i++)
    {
         
       // Sort even rows in ascending order
       if (i % 2 == 0)
       {
           for(j = 0; j < N; j++)
           {
              for(k = j + 1; k < N; ++k)
              {
                   
                 // Compare adjacent elements
                 if (a[i][j] > a[i][k])
                 {
                      
                     // Swap adjacent element
                     int temp = a[i][j];
                     a[i][j] = a[i][k];
                     a[i][k] = temp;
                 }
              }
           }
       }
        
       // Sort even rows in descending order
       else
       {
           for(j = 0; j < N; j++)
           {
              for(k = j + 1; k < N; ++k)
              {
                   
                 // Compare adjacent elements
                 if (a[i][j] < a[i][k])
                 {
                      
                     // Swap adjacent element
                     int temp = a[i][j];
                     a[i][j] = a[i][k];
                     a[i][k] = temp;
                 }
              }
           }
       }
    }
     
    // Printing the final Output
    for(i = 0; i < N; i++)
    {
       for(j = 0; j < N; j++)
       {
          System.out.print(a[i][j] + " ");
       }
       System.out.print("\n");
    }
}
 
// Driver code
public static void main (String []args)
{
 
    int a[][] = { { 5, 7, 3, 4 },
                  { 9, 5, 8, 2 },
                  { 6, 3, 8, 1 },
                  { 5, 8, 9, 3 } };
 
    func(a);
}
}
 
// This code is contributed by chitranayal


Python3
# Python3 implementation to print row of
# matrix in ascending or descending
# order alternatively
N = 4
 
def func(a):
     
    # Iterate matrix rowwise
    for i in range(N):
 
        # Sort even rows in ascending order
        if i % 2 == 0:
            for j in range(N):
                for k in range(j + 1, N):
                     
                    # Compare adjacent elements
                    if a[i][j] > a[i][k]:
                         
                        # Swap adjacent element
                        temp = a[i][j]
                        a[i][j] = a[i][k]
                        a[i][k] = temp
 
        # Sort even rows in descending order
        else :
            for j in range(N):
                for k in range(j + 1, N):
 
                    # Compare adjacent elements
                    if a[i][j] < a[i][k]:
 
                        # Swap adjacent element
                        temp = a[i][j]
                        a[i][j] = a[i][k]
                        a[i][k] = temp
 
    # Printing the final output
    for i in range(N):
        for j in range(N):
            print(a[i][j], end = " ")
        print()
         
# Driver code
if __name__ == '__main__':
 
    a = [ [ 5, 7, 3, 4 ],
          [ 9, 5, 8, 2 ],
          [ 6, 3, 8, 1 ],
          [ 5, 8, 9, 3 ] ]
           
    func(a)
 
# This code is contributed by mohit kumar 29


C#
// C# implementation to print row of
// matrix in ascending or descending
// order alternatively
using System;
class GFG{
     
static int N = 4;
 
static void func(int[,]a)
{
    int i, j, k;
     
    // Iterate matrix rowwise
    for(i = 0; i < N; i++)
    {
         
       // Sort even rows in ascending order
       if (i % 2 == 0)
       {
           for(j = 0; j < N; j++)
           {
              for(k = j + 1; k < N; ++k)
              {
                   
                 // Compare adjacent elements
                 if (a[i, j] > a[i, k])
                 {
                      
                     // Swap adjacent element
                     int temp = a[i, j];
                     a[i, j] = a[i, k];
                     a[i, k] = temp;
                 }
              }
           }
       }
        
       // Sort even rows in descending order
       else
       {
           for(j = 0; j < N; j++)
           {
              for(k = j + 1; k < N; ++k)
              {
                   
                 // Compare adjacent elements
                 if (a[i, j] < a[i, k])
                 {
                      
                     // Swap adjacent element
                     int temp = a[i, j];
                     a[i, j] = a[i, k];
                     a[i, k] = temp;
                 }
              }
           }
       }
    }
     
    // Printing the readonly Output
    for(i = 0; i < N; i++)
    {
       for(j = 0; j < N; j++)
       {
          Console.Write(a[i, j] + " ");
       }
       Console.Write("\n");
    }
}
 
// Driver code
public static void Main(String []args)
{
 
    int[,]a = { { 5, 7, 3, 4 },
                { 9, 5, 8, 2 },
                { 6, 3, 8, 1 },
                { 5, 8, 9, 3 } };
 
    func(a);
}
}
 
// This code is contributed by Princi Singh


Javascript


输出:
3 4 5 7 
9 8 5 2 
1 3 6 8 
9 8 5 3

时间复杂度: O(N 3 )

辅助空间: O(1)

如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live