Sorting Algorithm คือชุดของขั้นตอนในการจัดเรียงข้อมูลในลำดับที่กำหนด เช่น จากน้อยไปมาก (ascending) หรือจากมากไปน้อย (descending) ซึ่งมีความสำคัญในการจัดระเบียบข้อมูลเพื่อให้ง่ายต่อการค้นหาและวิเคราะห์ข้อมูล
⚙️ ประเภทของ Sorting Algorithm
Sorting Algorithm มีหลายรูปแบบ โดยแต่ละแบบมีจุดเด่นและจุดด้อยที่เหมาะกับสถานการณ์ต่าง ๆ ตัวอย่างที่นิยมใช้ ได้แก่:
- Bubble Sort – จัดเรียงโดยการเปรียบเทียบและสลับค่าข้างเคียงกัน
- Selection Sort – หาค่าที่เล็กที่สุดแล้วสลับไปไว้ด้านหน้าทีละรอบ
- Insertion Sort – แทรกค่าลงในตำแหน่งที่ถูกต้อง
- Merge Sort – แบ่งครึ่งและจัดเรียงจากส่วนเล็ก ๆ แล้วรวมกลับ
- 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)
| Algorithm | Best Case | Average Case | Worst Case | Space Complexity |
|---|---|---|---|---|
| Bubble Sort | O(n) | O(n²) | O(n²) | O(1) |
| Selection Sort | O(n²) | O(n²) | O(n²) | O(1) |
| Insertion Sort | O(n) | O(n²) | O(n²) | O(1) |
| Merge Sort | O(n log n) | O(n log n) | O(n log n) | O(n) |
| Quick Sort | O(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 👍
สนใจให้ช่วยอธิบายเพิ่มเติมหรือต้องการโค้ดตัวไหนเพิ่มเติมไหมครับ? 😊
![]()
