📜  程序来反转二维数组中的行

📅  最后修改于: 2021-05-17 03:28:41             🧑  作者: Mango

给定二维数组arr [] [] ,其大小为M x N个整数,其中M为行数, N为列数。任务是反转给定2D数组的每一行。
例子:

Input: arr[][] = 
{ {1, 2, 3},
  {4, 5, 6},
  {7, 8, 9} }
Output:
3 2 1
6 5 4
9 8 7

Input: arr[][] = 
{ {1, 2}, 
  {4, 5}, 
  {7, 8}, 
  {9, 10} }
Output:
2 1
5 4
8 7
10 9

方法:

  1. 对于给定2D数组中的每一行,请执行以下操作:
    • 开始索引设置为0,将结束索引设置为N-1。
    • 循环循环,直到开始索引小于结束索引,交换这些索引处的值并将索引更新为:
swap(arr[i][start], arr[i][end])
start++;
end--;
  1. 对2D数组中的所有行执行上述操作。

下面是上述方法的实现:

C++
// C++ implementation of the above approach
 
#include 
using namespace std;
 
const int M = 3;
const int N = 3;
 
// A utility function
// to swap the two element
void swap(int* a, int* b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}
 
// Function to reverse
// the given 2D arr[][]
void reverseArray(int arr[M][N])
{
 
    // Traverse each row of arr[][]
    for (int i = 0; i < M; i++) {
 
        // Initialise start and end index
        int start = 0;
        int end = N - 1;
 
        // Till start < end, swap the element
        // at start and end index
        while (start < end) {
 
            // Swap the element
            swap(&arr[i][start],
                 &arr[i][end]);
 
            // Increment start and decrement
            // end for next pair of swapping
            start++;
            end--;
        }
    }
 
    // Print the arr[][] after
    // reversing every row
    for (int i = 0; i < M; i++) {
        for (int j = 0; j < N; j++) {
            cout << arr[i][j] << ' ';
        }
        cout << endl;
    }
}
 
// Driver Code
int main()
{
    int arr[][3] = { { 1, 2, 3 },
                     { 4, 5, 6 },
                     { 7, 8, 9 } };
 
    // Function call
    reverseArray(arr);
    return 0;
}


Java
// Java implementation of the above approach
class GFG{
  
static int M = 3;
static int N = 3;
  
 
// Function to reverse
// the given 2D arr[][]
static void reverseArray(int arr[][])
{
  
    // Traverse each row of arr[][]
    for (int i = 0; i < M; i++) {
  
        // Initialise start and end index
        int start = 0;
        int end = N - 1;
  
        // Till start < end, swap the element
        // at start and end index
        while (start < end) {
  
            // Swap the element
            int temp = arr[i][start];
            arr[i][start] = arr[i][end];
            arr[i][end] = temp;
  
            // Increment start and decrement
            // end for next pair of swapping
            start++;
            end--;
        }
    }
  
    // Print the arr[][] after
    // reversing every row
    for (int i = 0; i < M; i++) {
        for (int j = 0; j < N; j++) {
            System.out.print(arr[i][j] + " ");
        }
        System.out.println();
    }
}
  
// Driver Code
public static void main(String[] args)
{
    int arr[][] = { { 1, 2, 3 },
                     { 4, 5, 6 },
                     { 7, 8, 9 } };
  
    // Function call
    reverseArray(arr);
}
}
 
// This code is contributed by PrinciRaj1992


Python3
# Python3 implementation of the above approach
M = 3;N = 3;
 
# Function to reverse
# the given 2D arr[][]
def reverseArray(arr) :
 
    # Traverse each row of arr[][]
    for i in range(M) :
 
        # Initialise start and end index
        start = 0;
        end = N - 1;
 
        # Till start < end, swap the element
        # at start and end index
        while (start < end) :
 
            # Swap the element
            arr[i][start], arr[i][end] = arr[i][end], arr[i][start];
 
            # Increment start and decrement
            # end for next pair of swapping
            start += 1;
            end -= 1;
 
    # Print the arr[][] after
    # reversing every row
    for i in  range(M) :
        for j in range(N) :
            print(arr[i][j],end= ' ');
     
        print();
  
# Driver Code
if __name__ ==  "__main__" :
 
    arr = [ [ 1, 2, 3 ],
            [ 4, 5, 6 ],
            [ 7, 8, 9 ] ];
 
    # Function call
    reverseArray(arr);
    
# This code is contributed by AnkitRai01


C#
// C# implementation of the above approach
using System;
 
class GFG{
   
static int M = 3;
static int N = 3;
   
// Function to reverse
// the given 2D [,]arr
static void reverseArray(int [,]arr)
{
   
    // Traverse each row of [,]arr
    for (int i = 0; i < M; i++) {
   
        // Initialise start and end index
        int start = 0;
        int end = N - 1;
   
        // Till start < end, swap the element
        // at start and end index
        while (start < end) {
   
            // Swap the element
            int temp = arr[i,start];
            arr[i, start] = arr[i, end];
            arr[i, end] = temp;
   
            // Increment start and decrement
            // end for next pair of swapping
            start++;
            end--;
        }
    }
   
    // Print the [,]arr after
    // reversing every row
    for (int i = 0; i < M; i++) {
        for (int j = 0; j < N; j++) {
            Console.Write(arr[i, j] + " ");
        }
        Console.WriteLine();
    }
}
   
// Driver Code
public static void Main(String[] args)
{
    int [,]arr = { { 1, 2, 3 },
                     { 4, 5, 6 },
                     { 7, 8, 9 } };
   
    // Function call
    reverseArray(arr);
}
}
 
// This code is contributed by PrinciRaj1992


Javascript


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