Привет, подскажите есть ли разница между двумя функциями ? за какое время они выполняются ?
Первую написал я, вторую нашел в интернете, суть в том что бы циклично сдвигать элементы в массиве на определенный шаг.
моя функция первая там я использую доп память- лучше вариант так и не смог придумать
#include <iostream>
using namespace std;
void rotate(int a[], unsigned size, int shift)
{
int b[size]={};
if (shift> size){
shift=size;
}
for (int i=shift;i<size;i++){
b[i - shift]=a[i];
}
for (int i=size-shift;i<size;i++){
b[i]=a[i-(size-shift)];
}
a=b;
for (int i=0;i<size;i++){
cout<<b[i]<<" ";
}
}
void rotate2(int a[], unsigned size, int shift){
int temp;
for (int i = 0, j; i < shift; ++i)
{
temp = a[0];
for (j = 0; j < size - 1; ++j)
a[j] = a[j + 1];
a[j] = temp;
}
for (int i=0;i<size;i++){
cout<<a[i]<<" ";
}
}
int main(){
int shift = 7;
unsigned size = 7;
int a[size]={1,2,3,4,5,6,7};
rotate2(a, size , shift);
return 0;
}