秋田大学ICPC対策室@wiki

配列を巡回シフトさせる

最終更新:

akitaicpc

- view
メンバー限定 登録/ログイン

配列を巡回シフトさせる


例えば、配列aが
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を使っているので無駄があります。
もし、あなたがこの関数をよりよいアルゴリズムに改良できたならこのページを編集しましょう。









...
目安箱バナー