Skip to content
Playground

演習: プロンプトと学習活用

以下のプロンプトを Gemini に入力してください。

JavaScript の配列のソートについて教えて

出力を読んで、本文 2-1. よくある問題と改善 の表に照らし合わせ、どこに不備があるかを書き出してください。

次に、特定した不備を改善するようプロンプトを修正し、再度入力してください。最初の出力と改善後の出力を比較し、どこが改善されたかを確認します。

ヒント

最初のプロンプトは「ソートについて」とだけ書いていて範囲が広いので、情報が多くなりがちです。「数値の昇順だけ」「コード例 1 つ」「初心者向け」のような制約を加えると、知りたい情報に絞れます。本文 1-4. 制約の明示 も参考になります。

2-b. 二分探索を AI と一緒に読む

Section titled “2-b. 二分探索を AI と一緒に読む”

7. 探索アルゴリズム で扱った二分探索のコードを Gemini に貼り付け、わからない箇所を質問してください。

function binarySearch(arr, target) {
let low = 0;
let high = arr.length - 1;
while (low <= high) {
const mid = Math.floor((low + high) / 2);
if (arr[mid] === target) {
return mid;
} else if (arr[mid] < target) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}

たとえば次のような質問をします。

このコードで Math.floor を使っているのはなぜですか?
low <= high ではなく low < high だとどうなりますか?
なぜ low = mid + 1 であって low = mid ではないのですか?

Gemini の回答を読んで、わからなかった部分を 自分の言葉で説明できるか 試してください。説明できなければ、追加で質問します。

ヒント

「動いた」で終わらせず、「わかった」まで深掘りするのがこの演習の目的です。本文 3. 学習への活用 を参照してください。

2-c. バブルソートのバグを見つける

Section titled “2-c. バブルソートのバグを見つける”

以下のコードはバブルソートを実装していますが、バグがあります。

function bubbleSort(arr) {
const n = arr.length;
for (let i = 0; i < n; i++) {
for (let j = 0; j < n - 1; j++) {
if (arr[j] > arr[j + 1]) {
arr[j] = arr[j + 1];
arr[j + 1] = arr[j];
}
}
}
return arr;
}
console.log(bubbleSort([5, 3, 8, 4, 2]));

このコードを実行すると、期待した [2, 3, 4, 5, 8] になりません。Gemini に以下のように質問してください。

以下のコードを実行すると、期待した結果になりません。
期待: [2, 3, 4, 5, 8]
実際: <ここに実際の結果を書く>
バグの原因を説明してください。修正コードはまだ見せないでください。

AI の説明を読んで原因を理解したら、自分でコードを修正してください。修正後、bubbleSort([5, 3, 8, 4, 2]) を実行して [2, 3, 4, 5, 8] が出力されることを確認します。

ヒント

arr[j] = arr[j + 1]arr[j] の元の値が消えてしまっています。本文 9. ソートアルゴリズム 2-2 実装の方針 で扱った temp を使う 3 段階の入れ替えが必要です。

2-d. 線形探索と二分探索を比較する

Section titled “2-d. 線形探索と二分探索を比較する”

Gemini に以下の質問をしてください。

線形探索と二分探索の違いを教えてください。
それぞれのメリット・デメリットも説明してください。

回答を読んだあと、さらに以下の質問をしてください。

配列が 10 個の場合と 10000 個の場合で、それぞれ最大何回の比較が必要ですか?
二分探索が使えない場面はありますか?その理由も教えてください。

最後に、以下の問いに 自分の言葉で 答えられるか確認してください。

  • 線形探索と二分探索、それぞれの特徴は?
  • それぞれのメリット・デメリットは?
  • どんな場面でどちらを使うべきか?
ヒント

二分探索は「ソート済みの配列」が前提です。本文 7. 探索アルゴリズム 3-1 線形探索の限界 も参考になります。