配列左シフト(c++)
タイトル
n(n>1)個の整数を一次元配列Rに格納する.時間と空間の両方で可能な限り効率的なアルゴリズムを設計し,Rに保存されたシーケンスを左にシフトp(0
アルゴリズム#アルゴリズム#
アルゴリズムは、Reverse()とLeftShift()の2つの関数で対応する機能を実現し、後者はReverse()関数を3回呼び出すことができる.
n(n>1)個の整数を一次元配列Rに格納する.時間と空間の両方で可能な限り効率的なアルゴリズムを設計し,Rに保存されたシーケンスを左にシフトp(0
アルゴリズム#アルゴリズム#
アルゴリズムは、Reverse()とLeftShift()の2つの関数で対応する機能を実現し、後者はReverse()関数を3回呼び出すことができる.
void Reverse(int R[],int left,int right)
{ int k=left,j=right,tmp; //k left, j right
while(k<j) // R[k] R[j]
{ tmp=R[k];
R[k]=R[j];
R[j]=tmp;
k++; //k
j--; //j
}
}
void LeftShift(int R[],int n,int p) // p
{
if(p>0&&p<n)
{
Reverse(R,0,n-1); //
Reverse(R,0,n-p-1); // n-p
Reverse(R,n-p,n-1); // p
}
}