# 算法设计：如何反转给定大小的组中的数组？

2021年3月21日16:42:07 发表评论 806 次浏览

## C ++

``````// C++ program to reverse every sub-array formed by
// consecutive k elements
#include <iostream>
using namespace std;

// Function to reverse every sub-array formed by
// consecutive k elements
void reverse( int arr[], int n, int k)
{
for ( int i = 0; i < n; i += k)
{
int left = i;

// to handle case when k is not multiple of n
int right = min(i + k - 1, n - 1);

// reverse the sub-array [left, right]
while (left < right)
swap(arr[left++], arr[right--]);

}
}

// Driver code
int main()
{
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
int k = 3;

int n = sizeof (arr) / sizeof (arr[0]);

reverse(arr, n, k);

for ( int i = 0; i < n; i++)
cout << arr[i] << " " ;

return 0;
}``````

## Java

``````// Java program to reverse every sub-array formed by
// consecutive k elements
class GFG {

// Function to reverse every sub-array formed by
// consecutive k elements
static void reverse( int arr[], int n, int k)
{
for ( int i = 0 ; i < n; i += k)
{
int left = i;

// to handle case when k is not multiple
// of n
int right = Math.min(i + k - 1 , n - 1 );
int temp;

// reverse the sub-array [left, right]
while (left < right)
{
temp=arr[left];
arr[left]=arr[right];
arr[right]=temp;
left+= 1 ;
right-= 1 ;
}
}
}

// Driver method
public static void main(String[] args)
{

int arr[] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 };
int k = 3 ;

int n = arr.length;

reverse(arr, n, k);

for ( int i = 0 ; i < n; i++)
System.out.print(arr[i] + " " );
}
}

// This code is contributed by Anant Agarwal.``````

## Python3

``````# Python 3 program to reverse every
# sub-array formed by consecutive k
# elements

# Function to reverse every sub-array
# formed by consecutive k elements
def reverse(arr, n, k):
i = 0

while (i<n):

left = i

# To handle case when k is not
# multiple of n
right = min (i + k - 1 , n - 1 )

# Reverse the sub-array [left, right]
while (left < right):

arr[left], arr[right] = arr[right], arr[left]
left + = 1 ;
right - = 1
i + = k

# Driver code
arr = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]

k = 3
n = len (arr)
reverse(arr, n, k)

for i in range ( 0 , n):
print (arr[i], end = " " )

# This code is contributed by Smitha Dinesh Semwal``````

## C#

``````// C# program to reverse every sub-array
// formed by consecutive k elements
using System;

class GFG
{

// Function to reverse every sub-array
// formed by consecutive k elements
public static void reverse( int [] arr, int n, int k)
{
for ( int i = 0; i < n; i += k)
{
int left = i;

// to handle case when k is
// not multiple of n
int right = Math.Min(i + k - 1, n - 1);
int temp;

// reverse the sub-array [left, right]
while (left < right)
{
temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left += 1;
right -= 1;
}
}
}

// Driver Code
public static void Main( string [] args)
{
int [] arr = new int [] {1, 2, 3, 4, 5, 6, 7, 8};
int k = 3;

int n = arr.Length;

reverse(arr, n, k);

for ( int i = 0; i < n; i++)
{
Console.Write(arr[i] + " " );
}
}
}

// This code is contributed
// by Shrikant13``````

## 的PHP

``````<?php
// PHP program to reverse every sub-array
// formed by consecutive k elements

// Function to reverse every sub-array
// formed by consecutive k elements
function reverse( \$arr , \$n , \$k )
{
for ( \$i = 0; \$i < \$n ; \$i += \$k )
{
\$left = \$i ;

// to handle case when k is not
// multiple of n
\$right = min( \$i + \$k - 1, \$n - 1);
\$temp ;

// reverse the sub-array [left, right]
while ( \$left < \$right )
{
\$temp = \$arr [ \$left ];
\$arr [ \$left ] = \$arr [ \$right ];
\$arr [ \$right ] = \$temp ;
\$left += 1;
\$right -= 1;
}
}
return \$arr ;
}

// Driver Code
\$arr = array (1, 2, 3, 4, 5, 6, 7, 8);
\$k = 3;

\$n = sizeof( \$arr );

\$arr1 = reverse( \$arr , \$n , \$k );

for ( \$i = 0; \$i < \$n ; \$i ++)
echo \$arr1 [ \$i ] . " " ;

// This code is contributed
// by Akanksha Rai
?>``````

``3 2 1 6 5 4 8 7``