基本情報 アルゴリズムについて質問です。設問1a はなぜエが正解ですか?b はなぜウが正解ですか?Cはなぜイが正解ですか?設問2なぜイが正解ですか?

1件の回答

回答を書く

1250066

2026-02-28 21:30

+ フォロー

<前提>

これはリスト挙動が前提です。

リスト挙動とは、リスト(配列とほぼ同義)に追加、削除が許されます。

リストに(通常は最後に)データを追加するとリストは1つ長くなります





>a はなぜエ(4)?





答え: エ(4)



最大比較回数は5回迄、

繰返し処理ブロックの実行回数は4回 

(5回目は繰返し処理ブロックは実行されません)



★詳細は添付図のトレース参照





>b はなぜウ?





★詳細は添付図のトレース参照





>Cはなぜイ(2)?





★詳細は添付図のトレース参照





>設問2: dはなぜイ?



挿入関数(挿入位置、データ)



一つずつ後ろへデータを移す実装部分は以下の何れか

a)テーブル[添字+1] ← テーブル[添字]

b)テーブル[添字] ← テーブル[添字-1]



a)で実装するときは、添字初期値=N-1 , 繰返し判定式(添字≧挿入位置) 

b)で実装するときは、添字初期値=N ,   繰返し判定式(添字>挿入位置)



ポイントは、

「挿入位置」のデータまで移動させたら、シフト動作の停止タイミングだからです





補足:

  データを任意の場所に挿入するにはその位置から以降のデータ群を一つずつ後ろに移動させる必要があります。

このようにデータをシフト動作(データをキャタピラの様に移動)させるには、

・後ろへの移動時は、一番後ろから

・前への移動時は、一番前から

処理します。

逆向きに処理すると、データ上書きされるので少々面倒な実装となります。









・二分探索処理

・挿入処理

の組合せ

二分探索の理解が *今一つ* であれば要点を説明します。



yahoo.co.jp/qa/question_detail/q13321567263">https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13321567263









探索関数

・先頭 ← 0

・末尾 ← データ - 1

・中央 ← (先頭+末尾)/2

■ 先頭 ≦ 末尾 and テーブル[中央] ≠ データ

┃  ▲ テーブル[中央] > データ

┃  ┃   ・成立の時:   末尾 ← 中央 - 1

┃  ┃   ・不成立の時: 先頭 ← 中央 + 1

┃  ▼ 

┃  ・中央 ← (先頭+末尾)/2





▲ 先頭 > 末尾

┃   ...この判定状態は

┃     ....データは見つからなかった、

┃     ....値の小大比較しながら最後の位置は[先頭]

┃ ・要素の挿入(先頭、データ)

┃   ...挿入位置と挿入データを引数に挿入関数呼出し

┃ ・データ数 ← データ数 + 1







~~~~ [トレース表条件] ~~~~

Tbl[] = {1,3,4,6,10,12,16,18,19,23} ...伸びることが可能

N ← 10

検索対象データは15

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有