配列を巡回シフトさせる
例えば、配列aが
a[5] = {0,1,2,3,4}
となっているところを
a[5] = {2,3,4,0,1}
のように巡回シフトさせたいことがあるかもしれません。
そんなときは次の関数を使うとよいでしょう。
a[5] = {0,1,2,3,4}
となっているところを
a[5] = {2,3,4,0,1}
のように巡回シフトさせたいことがあるかもしれません。
そんなときは次の関数を使うとよいでしょう。
//配列aの要素を右にj個巡回シフトする
void rotArray(int a[], int n, int j){
int *temp = new int[n];
while(j<0) j+=n;
for(int i=0 ; i<n ; i++){
temp[(i+j)%n] = a[i];
}
for(int i=0 ; i<n ; i++){
a[i] = temp[i];
}
delete [] temp;
}
jを-1とすれば左に1個分巡回シフトします。
この関数は、一時変数tempを使っているので無駄があります。
もし、あなたがこの関数をよりよいアルゴリズムに改良できたならこのページを編集しましょう。
この関数は、一時変数tempを使っているので無駄があります。
もし、あなたがこの関数をよりよいアルゴリズムに改良できたならこのページを編集しましょう。
...
