Elementləri sürüşdür#922

Elementləri sürüşdür (Həll təhlili)

Alqoritm Analizi

m tam ədədlərdən ibarət giriş massivini göstərsin. Əvvəlcə, massivin son elementini çıxaracağıq m[n – 1]. Sonra isə, m[0]-dan m[n – 2]-yə qədər olan bütün ədədləri ardıcıl olaraq çıxaracağıq.

Massivin elementlərinin həqiqətən də yenidən düzülüşü üçün elementi (i – 1)-ci hücrədən i-ci hücrəyə köçürmək lazımdır, 1 ≤ i ≤ n – 1. Ayrıca, (n – 1)-ci hücrədəki elementi 0-cı hücrəyə köçürmək lazımdır.

Alqoritm İcraatı

Tam ədəd massivi m elan edin.

int m[101];

Giriş ədədlərini m massivinə oxuyun.

scanf("%d",&n);
for(i = 0; i < n; i++)
    scanf("%d",&m[i]);

Əvvəlcə, massivin son ədədini m[n – 1] çıxaracağıq - bu, elementlərin bir mövqe sağa dövr etməsindən sonra ilk olacaq.

printf("%d",m[n-1]);

Sonra, sıfırıncı m[0]-dan sonuncuya qədər m[n – 2] bütün ədədləri çıxaracağıq.

for(i = 0; i < n - 1; i++)
    printf(" %d",m[i]);
printf("\n");

Elementlərin yenidən düzülüşü ilə icraat

Tam ədəd massivi m elan edin.

int m[101];

Giriş ədədlərini m massivinə oxuyun.

scanf("%d",&n);
for(i = 0; i < n; i++)
    scanf("%d",&m[i]);

Son elementi m[n – 1] temp dəyişənində saxlayın.

temp = m[n-1];

Elementi m[i – 1]-dən m[i]-yə köçürün (1 ≤ i ≤ n – 1).

for(i = n - 1; i > 0; i--)
    m[i] = m[i - 1];

Massivin sonundakı elementi massivin başlanğıcına təyin edin.

m[0] = temp;

Nəticədə alınan massivi çıxarın.

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

STL rotate ilə icraat

Tam ədəd vektoru elan edin.

vector<int> v;

Giriş məlumatlarını oxuyun.

scanf("%d", &n);
v.resize(n);
for (i = 0; i < n; i++)
    scanf("%d", &v[i]);

Massiv elementlərinin dövr etməsini həyata keçirin ki, son element ilk olsun.

rotate(v.begin(), v.begin() + n - 1, v.end());

Nəticədə alınan massivi çıxarın.

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

Dinamik massiv ilə icraat

#include <stdio.h>

int i, n, a;
int *m;

int main(void)
{
    scanf("%d",&n);
    m = new int[n];

    for(i = 0; i < n; i++)
        scanf("%d",&m[i]);

    printf("%d",m[n-1]);
    for(i = 0; i < n - 1; i++)
        printf(" %d",m[i]);
    printf("\n");

    delete[] m;
    return 0;
}

Java İcraatı

import java.util.*;

public class Main
{
    public static void main(String[] args)
    {
        Scanner con = new Scanner(System.in);
        int n = con.nextInt();
        int m[] = new int[n];
        for(int i = 0; i < n; i++)
            m[i] = con.nextInt();

        System.out.print(m[n-1]);
        for(int i = 0; i < n - 1; i++)
            System.out.print(" " + m[i]);
        System.out.println();
        con.close();
    }
}

Python İcraatı

n = int(input())
v = list(map(int, input().split()))

v = v[-1:] + v[:-1]

for num in v:
    print(num, end=" ")
print()