Fri. Feb 28th, 2025
Sorting Algorithm คืออะไร?Sorting Algorithm คืออะไร?
Spread the love

Sorting Algorithm คือชุดของขั้นตอนในการจัดเรียงข้อมูลในลำดับที่กำหนด เช่น จากน้อยไปมาก (ascending) หรือจากมากไปน้อย (descending) ซึ่งมีความสำคัญในการจัดระเบียบข้อมูลเพื่อให้ง่ายต่อการค้นหาและวิเคราะห์ข้อมูล

⚙️ ประเภทของ Sorting Algorithm

Sorting Algorithm มีหลายรูปแบบ โดยแต่ละแบบมีจุดเด่นและจุดด้อยที่เหมาะกับสถานการณ์ต่าง ๆ ตัวอย่างที่นิยมใช้ ได้แก่:

  1. Bubble Sort – จัดเรียงโดยการเปรียบเทียบและสลับค่าข้างเคียงกัน
  2. Selection Sort – หาค่าที่เล็กที่สุดแล้วสลับไปไว้ด้านหน้าทีละรอบ
  3. Insertion Sort – แทรกค่าลงในตำแหน่งที่ถูกต้อง
  4. Merge Sort – แบ่งครึ่งและจัดเรียงจากส่วนเล็ก ๆ แล้วรวมกลับ
  5. Quick Sort – เลือกค่า pivot และแบ่งข้อมูลเป็นสองส่วนเพื่อจัดเรียงแยกกัน

🟢 ตัวอย่างการเขียนโค้ดด้วย PHP

1. Bubble Sort

function bubbleSort($arr) {
    $n = count($arr);
    for ($i = 0; $i < $n - 1; $i++) {
        for ($j = 0; $j < $n - $i - 1; $j++) {
            if ($arr[$j] > $arr[$j + 1]) {
                // สลับค่า
                $temp = $arr[$j];
                $arr[$j] = $arr[$j + 1];
                $arr[$j + 1] = $temp;
            }
        }
    }
    return $arr;
}

$array = [64, 34, 25, 12, 22, 11, 90];
echo "Bubble Sort: ";
print_r(bubbleSort($array));

2. Selection Sort

function selectionSort($arr) {
    $n = count($arr);
    for ($i = 0; $i < $n - 1; $i++) {
        $minIndex = $i;
        for ($j = $i + 1; $j < $n; $j++) {
            if ($arr[$j] < $arr[$minIndex]) {
                $minIndex = $j;
            }
        }
        // สลับค่า
        $temp = $arr[$i];
        $arr[$i] = $arr[$minIndex];
        $arr[$minIndex] = $temp;
    }
    return $arr;
}

echo "Selection Sort: ";
print_r(selectionSort($array));

3. Insertion Sort

function insertionSort($arr) {
    $n = count($arr);
    for ($i = 1; $i < $n; $i++) {
        $key = $arr[$i];
        $j = $i - 1;
        // เลื่อนค่าที่มากกว่า key ไปข้างหน้า
        while ($j >= 0 && $arr[$j] > $key) {
            $arr[$j + 1] = $arr[$j];
            $j--;
        }
        $arr[$j + 1] = $key;
    }
    return $arr;
}

echo "Insertion Sort: ";
print_r(insertionSort($array));

4. Merge Sort

function mergeSort($arr) {
    if (count($arr) <= 1) {
        return $arr;
    }

    $mid = floor(count($arr) / 2);
    $left = array_slice($arr, 0, $mid);
    $right = array_slice($arr, $mid);

    return merge(mergeSort($left), mergeSort($right));
}

function merge($left, $right) {
    $result = [];
    while (count($left) > 0 && count($right) > 0) {
        if ($left[0] <= $right[0]) {
            $result[] = array_shift($left);
        } else {
            $result[] = array_shift($right);
        }
    }

    return array_merge($result, $left, $right);
}

echo "Merge Sort: ";
print_r(mergeSort($array));

5. Quick Sort

function quickSort($arr) {
    if (count($arr) < 2) {
        return $arr;
    }

    $pivot = $arr[0];
    $left = [];
    $right = [];

    for ($i = 1; $i < count($arr); $i++) {
        if ($arr[$i] <= $pivot) {
            $left[] = $arr[$i];
        } else {
            $right[] = $arr[$i];
        }
    }

    return array_merge(quickSort($left), [$pivot], quickSort($right));
}

echo "Quick Sort: ";
print_r(quickSort($array));

📊 เปรียบเทียบประสิทธิภาพ (Time Complexity)

AlgorithmBest CaseAverage CaseWorst CaseSpace Complexity
Bubble SortO(n)O(n²)O(n²)O(1)
Selection SortO(n²)O(n²)O(n²)O(1)
Insertion SortO(n)O(n²)O(n²)O(1)
Merge SortO(n log n)O(n log n)O(n log n)O(n)
Quick SortO(n log n)O(n log n)O(n²)O(log n)

📝 สรุป

  • Bubble Sort, Selection Sort, Insertion Sort เหมาะสำหรับชุดข้อมูลขนาดเล็ก
  • Merge Sort, Quick Sort เหมาะสำหรับชุดข้อมูลขนาดใหญ่และมีประสิทธิภาพสูงกว่า

หากคุณต้องการการเรียงลำดับที่เร็วและมีประสิทธิภาพ แนะนำให้เลือกใช้ Merge Sort หรือ Quick Sort 👍

สนใจให้ช่วยอธิบายเพิ่มเติมหรือต้องการโค้ดตัวไหนเพิ่มเติมไหมครับ? 😊

Loading

By tikky

Leave a Reply

Your email address will not be published. Required fields are marked *