# 算法：拆分数组并将第一部分添加到末尾

2021年3月21日16:44:25 发表评论 650 次浏览

## 本文概述

``````Input : arr[] = {12, 10, 5, 6, 52, 36}
k = 2
Output : arr[] = {5, 6, 52, 36, 12, 10}
Explanation : Split from index 2 and first
part {12, 10} add to the end .

Input : arr[] = {3, 1, 2}
k = 1
Output : arr[] = {1, 2, 3}
Explanation : Split from index 1 and first
part add to the end.``````

## C ++

``````// CPP program to split array and move first
// part to end.
#include <bits/stdc++.h>
using namespace std;

void splitArr( int arr[], int n, int k)
{
for ( int i = 0; i < k; i++) {

// Rotate array by 1.
int x = arr[0];
for ( int j = 0; j < n - 1; ++j)
arr[j] = arr[j + 1];
arr[n - 1] = x;
}
}

// Driver code
int main()
{
int arr[] = { 12, 10, 5, 6, 52, 36 };
int n = sizeof (arr) / sizeof (arr[0]);
int position = 2;

splitArr(arr, 6, position);

for ( int i = 0; i < n; ++i)
printf ( "%d " , arr[i]);

return 0;
}``````

## Java

``````// Java program to split array and move first
// part to end.

import java.util.*;
import java.lang.*;
class GFG {
public static void splitArr( int arr[], int n, int k)
{
for ( int i = 0 ; i < k; i++) {

// Rotate array by 1.
int x = arr[ 0 ];
for ( int j = 0 ; j < n - 1 ; ++j)
arr[j] = arr[j + 1 ];
arr[n - 1 ] = x;
}
}

// Driver code
public static void main(String[] args)
{
int arr[] = { 12 , 10 , 5 , 6 , 52 , 36 };
int n = arr.length;
int position = 2 ;

splitArr(arr, 6 , position);

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

// Code Contributed by Mohit Gupta_OMG <(0_o)>``````

## Python3

``````# Python program to split array and move first
# part to end.

def splitArr(arr, n, k):
for i in range ( 0 , k):
x = arr[ 0 ]
for j in range ( 0 , n - 1 ):
arr[j] = arr[j + 1 ]

arr[n - 1 ] = x

# main
arr = [ 12 , 10 , 5 , 6 , 52 , 36 ]
n = len (arr)
position = 2

splitArr(arr, n, position)

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

# Code Contributed by Mohit Gupta_OMG <(0_o)>``````

## C#

``````// C# program to split array
// and move first part to end.
using System;

class GFG {

// Function to spilt array and
// move first part to end
public static void splitArr( int [] arr, int n, int k)
{
for ( int i = 0; i < k; i++)
{

// Rotate array by 1.
int x = arr[0];
for ( int j = 0; j < n - 1; ++j)
arr[j] = arr[j + 1];
arr[n - 1] = x;
}
}

// Driver code
public static void Main()
{
int [] arr = {12, 10, 5, 6, 52, 36};
int n = arr.Length;
int position = 2;
splitArr(arr, 6, position);

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

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

## 的PHP

``````<?php
// PHP program to split array
// and move first part to end.

function splitArr(& \$arr , \$n , \$k )
{
for ( \$i = 0; \$i < \$k ; \$i ++)
{

// Rotate array by 1.
\$x = \$arr [0];
for ( \$j = 0; \$j < \$n - 1; ++ \$j )
\$arr [ \$j ] = \$arr [ \$j + 1];
\$arr [ \$n - 1] = \$x ;
}
}

// Driver code
\$arr = array (12, 10, 5, 6, 52, 36);
\$n = sizeof( \$arr );
\$position = 2;

splitArr( \$arr , 6, \$position );

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

// This code is contributed
// by ChitraNayal
?>``````

``5 6 52 36 12 10``

## C ++

``````// CPP program to split array and move first
// part to end.
#include <bits/stdc++.h>
using namespace std;

// Function to spilt array and
// move first part to end
void splitArr( int arr[], int length, int rotation)
{
int tmp[length * 2] = {0};

for ( int i = 0; i < length; i++)
{
tmp[i] = arr[i];
tmp[i + length] = arr[i];
}

for ( int i = rotation; i < rotation + length; i++)
{
arr[i - rotation] = tmp[i];
}
}

// Driver code
int main()
{
int arr[] = { 12, 10, 5, 6, 52, 36 };
int n = sizeof (arr) / sizeof (arr[0]);
int position = 2;

splitArr(arr, n, position);

for ( int i = 0; i < n; ++i)
printf ( "%d " , arr[i]);

return 0;
}

// This code is contributed by YashKhandelwal8``````

## Java

``````// Java program to split array and move first
// part to end.
import java.util.*;
import java.lang.*;
class GFG {

// Function to spilt array and
// move first part to end
public static void SplitAndAdd( int [] A, int length, int rotation){

//make a temporary array with double the size
int [] tmp = new int [length* 2 ];

// copy array element in to new array twice
System.arraycopy(A, 0 , tmp, 0 , length);
System.arraycopy(A, 0 , tmp, length, length);
for ( int i=rotation;i<rotation+length;i++)
A[i-rotation]=tmp[i];
}

// Driver code
public static void main(String[] args)
{
int arr[] = { 12 , 10 , 5 , 6 , 52 , 36 };
int n = arr.length;
int position = 2 ;

SplitAndAdd(arr, n, position);

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

## Python3

``````# Python3 program to split array and
# move first part to end.

# Function to spilt array and
# move first part to end
def SplitAndAdd(A, length, rotation):

# make a temporary array with double
# the size and each index is initialized to 0
tmp = [ 0 for i in range (length * 2 )]

# copy array element in to new array twice
for i in range (length):
tmp[i] = A[i]
tmp[i + length] = A[i]

for i in range (rotation, rotation + length, 1 ):
A[i - rotation] = tmp[i];

# Driver code
arr = [ 12 , 10 , 5 , 6 , 52 , 36 ]
n = len (arr)
position = 2
SplitAndAdd(arr, n, position);
for i in range (n):
print (arr[i], end = " " )
print ()

# This code is contributed by SOUMYA SEN``````

## C#

``````// C# program to split array
// and move first part to end.
using System;

class GFG
{

// Function to spilt array and
// move first part to end
public static void SplitAndAdd( int [] A, int length, int rotation)
{

// make a temporary array with double the size
int [] tmp = new int [length * 2];

// copy array element in to new array twice
Array.Copy(A, 0, tmp, 0, length);
Array.Copy(A, 0, tmp, length, length);
for ( int i = rotation; i < rotation + length; i++)
{
A[i - rotation] = tmp[i];
}
}

// Driver code
public static void Main( string [] args)
{
int [] arr = new int [] {12, 10, 5, 6, 52, 36};
int n = arr.Length;
int position = 2;

SplitAndAdd(arr, n, position);

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

// This code is contributed by kumar65``````

``5 6 52 36 12 10``