Для данного массива циклически вращайте массив по часовой стрелке на единицу.
Примеры:
Input: arr[] = {1, 2, 3, 4, 5}
Output: arr[] = {5, 1, 2, 3, 4}
Ниже приведены шаги.
1) Сохраните последний элемент в переменной скажем х.
2) Переместите все элементы на одну позицию вперед.
3) Заменить первый элемент массива на x.
C ++
# include <iostream>
using namespace std;
void rotate( int arr[], int n)
{
int x = arr[n - 1], i;
for (i = n - 1; i > 0; i--)
arr[i] = arr[i - 1];
arr[0] = x;
}
int main()
{
int arr[] = {1, 2, 3, 4, 5}, i;
int n = sizeof (arr) /
sizeof (arr[0]);
cout << "Given array is \n" ;
for (i = 0; i < n; i++)
cout << arr[i];
rotate(arr, n);
cout << "\nRotated array is\n" ;
for (i = 0; i < n; i++)
cout << arr[i];
return 0;
}
|
С
#include <stdio.h>
void rotate( int arr[], int n)
{
int x = arr[n-1], i;
for (i = n-1; i > 0; i--)
arr[i] = arr[i-1];
arr[0] = x;
}
int main()
{
int arr[] = {1, 2, 3, 4, 5}, i;
int n = sizeof (arr)/ sizeof (arr[0]);
printf ( "Given array is\n" );
for (i = 0; i < n; i++)
printf ( "%d " , arr[i]);
rotate(arr, n);
printf ( "\nRotated array is\n" );
for (i = 0; i < n; i++)
printf ( "%d " , arr[i]);
return 0;
}
|
Джава
import java.util.Arrays;
public class Test
{
static int arr[] = new int []{ 1 , 2 , 3 , 4 , 5 };
static void rotate()
{
int x = arr[arr.length- 1 ], i;
for (i = arr.length- 1 ; i > 0 ; i--)
arr[i] = arr[i- 1 ];
arr[ 0 ] = x;
}
public static void main(String[] args)
{
System.out.println( "Given Array is" );
System.out.println(Arrays.toString(arr));
rotate();
System.out.println( "Rotated Array is" );
System.out.println(Arrays.toString(arr));
}
}
|
python3
def rotate(arr, n):
x = arr[n - 1 ]
for i in range (n - 1 , 0 , - 1 ):
arr[i] = arr[i - 1 ];
arr[ 0 ] = x;
arr = [ 1 , 2 , 3 , 4 , 5 ]
n = len (arr)
print ( "Given array is" )
for i in range ( 0 , n):
print (arr[i], end = ' ' )
rotate(arr, n)
print ( "\nRotated array is" )
for i in range ( 0 , n):
print (arr[i], end = ' ' )
|
C #
using System;
public class Test
{
static int []arr = new int []{1, 2, 3, 4, 5};
static void rotate()
{
int x = arr[arr.Length - 1], i;
for (i = arr.Length - 1; i > 0; i--)
arr[i] = arr[i-1];
arr[0] = x;
}
public static void Main()
{
Console.WriteLine( "Given Array is" );
string Original_array = string .Join( " " , arr);
Console.WriteLine(Original_array);
rotate();
Console.WriteLine( "Rotated Array is" );
string Rotated_array = string .Join( " " , arr);
Console.WriteLine(Rotated_array);
}
}
|
PHP
<?php
function rotate(& $arr , $n )
{
$x = $arr [ $n - 1];
for ( $i = $n - 1;
$i > 0; $i --)
$arr [ $i ] = $arr [ $i - 1];
$arr [0] = $x ;
}
$arr = array (1, 2, 3, 4, 5);
$n = sizeof( $arr );
echo "Given array is \n" ;
for ( $i = 0; $i < $n ; $i ++)
echo $arr [ $i ] . " " ;
rotate( $arr , $n );
echo "\nRotated array is\n" ;
for ( $i = 0; $i < $n ; $i ++)
echo $arr [ $i ] . " " ;
?>
|
Выход:
Given array is
1 2 3 4 5
Rotated array is
5 1 2 3 4
Сложность времени: O (n) Поскольку нам нужно перебрать все элементы
Вспомогательное пространство: O (1)
Вышеуказанный вопрос также можно решить с помощью алгоритма обращения
Пожалуйста, напишите комментарии, если вы обнаружите какую-либо ошибку в приведенном выше коде / алгоритме, или найдете другие способы решения той же проблемы.
Рекомендуемые посты:
Программа для циклического поворота массива на один
0.00 (0%) 0 votes