- ベストアンサー
pascalでの二分探索(バイナリサーチ)
ファイルからデータを読み込み,それを整列し,入力された値をデータの中から二分探索によって探索することを繰り返すプログラムが作りたいのですが,どのように記述すればよいのか分かりません。教えてください。
- みんなの回答 (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)
とりあえず、手順の各部分でどうするかはわかってますか? ・ファイルからデータを読み込む ・整列する ・二分探索によって検索を行う データの種類(文字列とか整数)や個数についての 情報はないのですか?
補足
整列する方法は分かっています。 データは20個の整数です。