在學 Java 的過程中,最讓人頭痛的通常不是語法,而是那些經典的「排序(Sorting)」與「搜尋(Searching)」演算法
像是泡沫排序(Bubble Sort)、插入排序(Insertion Sort)、選擇排序(Selection Sort)、二元搜尋(Binary Search)等等
這些名字背後到底在做什麼?
今天就讓我們用 ChatGPT 來「用白話文」幫我們拆解它們!
我的提示詞(Prompt)
「請用簡單的方式,解釋Bubble Sort是怎麼運作的,並附上Java程式範例。」
ChatGPT 的講解(濃縮版)
泡沫排序(Bubble Sort)概念:
像泡泡一樣,最大的數字會在每一輪「浮」到最後。
比較相鄰的兩個數字,如果前者比較大就交換,重複這個過程直到整個陣列有序。
public static void main(String[] args) {
int[] arr = {5, 2, 9, 1, 5, 6};
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
System.out.print("排序結果:");
for (int n : arr) System.out.print(n + " ");
}
}
ChatGPT 會幫忙加註解、說明每一行的邏輯,甚至可以幫你改成「印出每一輪的狀態」來觀察排序過程,
非常適合初學者理解演算法的運作!
搜尋演算法(Binary Search)
接著我又問 ChatGPT:「請用生活例子說明二元搜尋是怎麼找出資料的?」
它給了這個例子👇
「想像你在查電話簿裡找某個姓氏,你不會一頁一頁翻,而是先打開中間,看看要往前還是往後查。」
這就是 二元搜尋:不斷把搜尋範圍對半切。
範例程式:
public class BinarySearch {
public static void main(String[] args) {
int[] arr = {1, 3, 5, 7, 9, 11};
int target = 7;
int left = 0, right = arr.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
System.out.println("找到目標!位置:" + mid);
return;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
System.out.println("找不到目標!");
}
}
延伸練習(可以請AI幫你)
請ChatGPT比較Bubble Sort和Insertion Sort的差別
讓它用圖表或文字動畫方式「一步步」說明排序過程
或請它改寫成「反向排序」(從大到小)版本
今日心得
以前看排序與搜尋都覺得好抽象,但有了 ChatGPT 幫忙「白話拆解 + 直接給程式」,
就像有一位24小時都不嫌你問太多問題的程式助教
有時候我甚至請它模擬「老師講課」的方式,效果真的超好!