• ベストアンサー

pascalでの二分探索(バイナリサーチ)

ファイルからデータを読み込み,それを整列し,入力された値をデータの中から二分探索によって探索することを繰り返すプログラムが作りたいのですが,どのように記述すればよいのか分かりません。教えてください。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

ひょっとして二分探索のアルゴリズムをPascalで どう記述するか見当がつかないとかいう話だったりしますか? program ex01(input, output); var data : array [1..20] of integer; procedure readdata(); var i, v: integer; f : text; begin (* assign(f, 'sample.txt');*) reset(f, 'sampledata.txt'); for i:=1 to 20 do begin readln(f, v); writeln(v); data[i] := v; end; end; procedure sortdata(); var i: integer; begin for i:=1 to 20 do begin (* 省略 *) writeln(data[i]); end; end; procedure search(v: integer); var low, high, mid: integer; begin while low < high do begin mid := (high - low) div 2 + low; (* 省略 *) end end; begin (* read data *) writeln('#####'); readdata(); (* sort *) writeln('#####'); sortdata(); (* search *) search(15); end. てな感じで組めば良いのではないですか? 検索対象の値の入力は工夫の余地ありですけど。 ファイルのオープンの手続きは処理系によって 違うようなので参考程度に。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

とりあえず、手順の各部分でどうするかはわかってますか? ・ファイルからデータを読み込む ・整列する ・二分探索によって検索を行う データの種類(文字列とか整数)や個数についての 情報はないのですか?

kachimoai
質問者

補足

整列する方法は分かっています。 データは20個の整数です。

関連するQ&A