• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.NET: ファイルの二分探索のヒントを!)

VB.NETのファイル二分探索のヒントを!

このQ&Aのポイント
  • VB.NET初学者がファイルの二分探索を学習中です。
  • 配列に呼び込んだ付属一覧.csvを二分探索していますが、非現実的です。
  • ヒントやクラスの使用方法など、VB.NETのファイル二分探索についての助言をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KG_
  • ベストアンサー率62% (34/54)
回答No.1

なにも回答がついてないので、ご参考までに。 ちなみに二分探索はやったことないですが、ちょっと調べてみました。 二分探索は全体の行数(要素数)が見えてないと処理自体は無理かと 思います。 前提としてファイルの中身はソートされていると思いますが、 ファイルを全行読み込むぐらいなら、読み込む過程で比べればいいわけ で、二分探索などする必要はありません。 ただ固定長データの場合は1行あたりのバイト数が決まっており (例外有り)、ファイルのバイト数より中間行の位置を予測できる為 ランダムアクセスorバイナリアクセスをすれば、全行読み込まずとも 二分探索が行えるかと思います。 CSVデータのまま行いたいとなると、ちょっと思いつきません。 >「VB.NET は何ができてもおかしくない」と思い始めているからです。 この部分に関しては同意です。実装に多少の違いはあれども、なんでも できると思っています。 #二分探索未経験者の参考意見でしかありませんので、多少の勘違いは #ご容赦下さい。

noname#140971
質問者

お礼

>二分探索は全体の行数(要素数)が見えてないと処理自体は無理かと思います。 OKWave の回答で、リストメンバ、TextFieldParser クラスを知りました。 それで、これらを利用して配列に読み込み二分検索をしてみました。 その過程で、「非固定長の外ファイルの二分検索の手法」を考え続けました。 でも、サッパリです。 でも、貴回答をも手がかりに「それらしきこと」に挑戦したいと思います。 でないと、次のSwitch文に進めません。 1、全行の開始位置を予め配列に格納する。 2、ともかく、全体のサイズを手がかりに二分検索する。 サッパリながら考えているのは、この2つです。 2の場合、行の途中であろうがなかろうが行を取得できればよい。 しかし、この<行の途中であろうがなかろうが行を取得する方法>がサッパリ。 配列にかんしては、リストメンバ、TextFieldParser クラスを使えば良いはわかりました。 しかし、 aArray().Add = "ABC" aArray().Add = "DEF" .NET なら、これ位はできるだろう! との疑問の回答は未だです。 な、なんとか<行の途中であろうがなかろうが行を取得する方法>を見つけたいと思います。 ありがとうございました。 貴回答は、<行の途中であろうがなかろうが行を取得する方法>へ関心を集中させたようです。 ありがとうございました。

関連するQ&A