「配列を巡回シフトさせる」の編集履歴(バックアップ)一覧はこちら
「配列を巡回シフトさせる」(2011/02/12 (土) 20:50:14) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*配列を巡回シフトさせる
例えば、配列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を使っているので無駄があります。
もし、あなたがこの関数をよりよいアルゴリズムに改良できたならこのページを編集しましょう。
...
表示オプション
横に並べて表示:
変化行の前後のみ表示: