• ベストアンサー

配列入れ替えの効率的方法は

haporunの回答

  • ベストアンサー
  • haporun
  • ベストアンサー率40% (230/562)
回答No.5

>次に発生するデータを配列に追加する処理を考えていたので発生するデータが1個であれば1つずらして空きをつくりそこに代入しようと考えていました。 それならやはりリングバッファが目的にかなっているではないですか。 X = (X + 1) Mod 3000 '最初の添え字は最後になる a(X) = NewData '最初にデータを追加 Debug.Print a(X + n) 'n番目のデータを表示する こういうのがアルゴリズムというものです。 ちなみに、"補足" を利用した場合、1つのところに書くとすべての回答者にメールが行くので、同じことを書く必要はありません。

mehiro2
質問者

お礼

VBが初心者で申し訳ございませんでした。 リングバッファというものが知りませんでしたので 調べてみます。 有難うございました。

関連するQ&A

  • 配列の結合?について

    . . Dim GetDate for i=startYear to lastYear GetDate = obj.xxxx i = i + 1 next . . このような形で年度別にGetDateに配列でデータを格納しています。 この年度別に作られる配列を一つの配列変数に代入したいのですが、 どうすればよろしいでしょうか?

  • 配列を使わずに、数字(連番)を使用した変数に値を代入したい。

    配列を使わずに、数字(連番)を使用した変数に値を代入したい。 お世話になっております。 配列を使わずに、数字(連番)を使用した変数($a1,$a2,$a3・・・)に、 forループを使って、値を代入したい。 #================================= for($i;$i<10;$i++){ $a??? = 10; #←ここがわかりません。 } #================================= どなたかご存知の方、ご教授ください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 配列長参照のオーバーヘッド

    for等ループでループ終了条件に配列長を使用する場合、配列長を毎回参照する場合と一旦変数に格納して参照する場合、定数を使用する場合と処理速度の差はありますか? つまり 1、for( int i = 0; i < array.length; i++ ) { ... } 2、for( int i = 0; i < len; i++ ) { ... } *(int len=array.length) 3、for( int i = 0; i < 10; i++ ) { ... } *(int[] array = new int[10]) forループ内の処理のメモリ使用量の多寡は不明で、毎ループで読み取られる全ての変数はコンピュータのキャッシュに残るかどうかは不明だとします。

    • ベストアンサー
    • Java
  • [arduino]数値の大きなデータを二次配列へ

    シリアル通信で得たデータを二次元配列へ格納するために、 以前では、 if(Serial.available()>120){ for(int k=0;k<8;k++){ for(int l=0;l<15;l++){ //読み込んだ値を配列に代入 matrix[k][l]=Serial.read(); } } } このようなやり方で読み込んだ値を二次元配列に代入していたのですが、 128個以上のデータを扱いたい場合、Serial.availableでは保持できず、困っています。 方法として、 (1)一つずつデータを読み込み、128回ループを繰り返し配列に貯めていく。その後配列を2次元配列に代入する。 (2)一つデータを読みこんだら二次元配列の1行目1列目のドットに格納、もう一つデータを読みこんだら二次元配列の1行目2列目のドットに格納…というように、 読みこんだデータをそのまま二次元配列のそれぞれの場所へ格納していく。 というような二つの方法を思いついたのですが、 (1)の方法では、配列にデータを貯蓄していくコードをこのように↓書いたのですがうまくいかず、 for(int i=0;i<128;i++){ if(Serial.available()>0){ data[128] = Serial.read(); } } (2)の方法では、データを二次元配列のそれぞれの場所へ格納していく指定方法が分かりませんでした。 正しい書き方や、良いアイデアをお持ちの方がいましたら、是非御教授お願いします。

  • 配列のbindValue方法について

    <環境> サーバーOS:CentOS webサーバー:apache データベース:MySQL PHP5.2 現在、上記の環境でwebアプリを作成しています。 データベースにデータを登録する際にPDOを使用しているのですが、 二次元配列に格納されているデータを bindValue() できずに困っています。 データが多く、個数もその都度変化するので、二次元配列に格納しています。 簡易的ではありますが、以下のようなソースコードになります。 <ソースコード> $dataArray → データが格納されている二次元配列 $columns = array(':id', ':name'); → プレイスホルダー名を格納している配列 for($i = 0; $i < count($dataArray); $i++) { $stt = $dataBase -> prepare('insert into tb_test(id, name) values(:id, :name)'); for($j = 0; $j < count($dataArray[ i ]); $j++) { $stt -> bindValue($columns[ $j ] ,$dataArray[ $i ][ $j ]); } $stt -> execute(); } 二次元配列の1行分のデータをループで bindValue() してから execute() で実行しています。 これを二次元配列の行数回繰り返しています。 apacheのエラーログには特に何も表示されていませんが、 登録処理ができません。 このような forループ では実行できないのでしょうか?

    • 締切済み
    • PHP
  • Perlの初歩的な質問・・・

    @data に大量のデータが格納されていると仮定して、次のようにループ処理するとします・・・ for($i = 0 ; $i < @data ; ++$i){ @XXX = split(/\t/, $data[$i]); } このように @data のデータをさらに細かく配列化して @XXX に代入したいのですが、ループのたびに @XXX の名前を XXX0 , XXX1 , XXX2..... とするには、どうしたらよいのでしょうか。

    • ベストアンサー
    • Perl
  • PHPで配列の最も小さいもの3つを取り出す方法

    PHPで配列のソートが出来ずに困っています 今 $a[2]=10 $a[10]=2 $a[3]=30 $a[22]=20 $a[9]=4 $a[53]=29 ・ ・ ・ のような配列があり、これを配列の値の小さいものから順に3つ取り出したいのですが、どの様にしたらよいでしょうか? 具体的には $a[10],$a[9],$a[2] という形で取り出したいです 最終的にはそれぞれの添え字を他の変数に代入した形にしたいです $b[1] = '10'; $b[2] = '9'; $b[3] = '2'; みたいなかんじです どなたかご解答いただければと思います どうぞよろしくお願いいたします

    • ベストアンサー
    • PHP
  • VBの配列について

    VB6.0について質問です。 データベースにある1レコードの情報を一括して取得し 変数に配列化して格納したいのですが可能ですか? データベースはAccessです。 DAOで接続を考えております。 以下のソースを試したのですが駄目でした><; dim ITEM_A() For tmp1 = 0 To ds.Fields.Count - 1 Step 1 ITEM_A = Replace(ds.Fields(tmp1).Value, vbCrLf, "") Next ITEM_A(0)=data1 ITEM_A(1)=data2 ITEM_A(3)=data3 ITEM_A(4)=data4 以上のように格納したいのでお願いします><

  • 配列の受け渡し

    こんばんは。 あるページで使用した配列を他のページでも使いたいのですが、 こういう配列を格納した変数の受け渡しって出来るのでしょうか? 普通の変数のデータを受け渡したかったら <input type="hidden" />で直接valueに変数の値を入れれば良いですが、 配列だと自分では以下のように愚直にやる方法しか分かりません。 もっとちゃんと渡せる方法ってあるのでしょうか? <?$a=array(1,2,3,4,5);?> <? for($i=0;$i<count($aaa);$i++){ ?> <input type="hidden" value="<?=$aaa[$i]?>" name="hoge[]"/> <?}?>

    • ベストアンサー
    • PHP
  • 【配列の保存&書き込み】

    配列を使って保存&読み込みをしたい! しかし、単純な変数を使った保存、読み込みしか サンプルが見つからなくて(汗 それで質問させて貰います。 (1)変数kirokuの配列作成 (2)記録したデータが無いかチェック (3)分岐→(4)【データが存在】→(6)【データが無い】 (4)データが存在するなら変数のすべて呼び出し  kiroku(3)まで。 (5)データが無いなら配列にすべて"0"を代入。  kiroku(3)まで。 ↓【自分で少し作ったソース】 //変数 kiroku = new Array(); //既にデータが保存しているかチェック if (savedata.data.kiroku[0] != null) { //特に処理なし } else { //データが存在していれば初期値0に設定。 for (i=0; i<3; i++) { kiroku[i] = 0; } for (j=0; j<3; j++) { kiroku[i][j] = 0; } } これだけでは動かないのは理解しております。 sharedObjectと配列を使って、読み込み、書き込みする 方法を教えてくださいお願いします。

    • ベストアンサー
    • Flash