Страница 1 из 1

Задача в R studio.

Добавлено: 05 ноя 2017, 15:52
Kate_01
Помогите решит, пожалуйста.
Дан массив X[1..N]. Необходимо циклически сдвинуть его на k элементов вправо (т.е. элемент X после сдвига должен стоять на месте X[i+k]; тут мы считаем что за X[N] следует X[1]). Разрешается использовать только несколько дополнительных слов памяти (Дополнительного массива заводить нельзя!).

Re: Задача в R studio.

Добавлено: 06 ноя 2017, 11:09
gamm
опять школьники с домашними заданиями ... для сдвига на к=1 выньте первый, сдвиньте остальных на одну позицию (двигаясь справа налево), и вставьте вынутого на последнее место. Повторите к раз.

Re: Задача в R studio.

Добавлено: 22 ноя 2017, 21:56
Kate_01
Проверьте код, пожалуйста. Можно ли решить задачу по-другому?

x<-c(1,2,3,4,5,6,7)
k<-9
k<-k%%length(x)
j<-1
l<-length(x)-k
while(j<=l){
a<-x[j]
x[j]<-x[l]
x[l]<-a
l=l-1
j=j+1
}
i<-length(x)
t=length(x)-k+1
while(t<=i){
a<-x[t]
x[t]<-x
x<-a
t=t+1
i=i-1
}
i<-length(x)
j<-1
while(j<=i){
a<-x[j]
x[j]<-x
x<-a
j=j+1
i=i-1
}
x