การเรียงลำดับข้อมูล (Sorting) เป็นหนึ่งในการดำเนินการพื้นฐานที่สำคัญในการเขียนโปรแกรม หนึ่งในอัลกอริทึมการเรียงข้อมูลที่ทรงพลังและทั่วไปที่สุดคือ Quick Sort ซึ่งถูกพัฒนาโดย Tony Hoare ในปี 1960 และยังคงเป็นอัลกอริทึมยอดนิยมมาจนถึงทุกวันนี้ เรียนรู้หลักการของมัน คุณจะพบว่าการเขียนโปรแกรมไม่ใช่แค่ศาสตร์แต่ยังเป็นศิลปะในการแก้ไขปัญหาด้วย
Quick Sort เป็นอัลกอริทึมการเรียงลำดับแบบ"แบ่งแล้วครอง"(Divide and Conquer) ที่เลือกข้อมูลหนึ่งชิ้นจากอาเรย์(array) ซึ่งเรียกว่า 'pivot' และจัดเรียงให้ข้อมูลที่น้อยกว่า pivot อยู่ด้านหนึ่ง, ใหญ่กว่าอยู่อีกด้านหนึ่ง ด้วยการทำเช่นนี้อย่างเรื้อรัง, อาเรย์จะถูกเรียงลำดับได้อย่างถูกต้อง
ตัวอย่างโค้ดภาษา C สำหรับ Quick Sort:
#include
void quickSort(int *arr, int left, int right) {
if (left < right) {
int partitionIndex = partition(arr, left, right);
// Recursively sort elements before
// and after partition
quickSort(arr, left, partitionIndex - 1);
quickSort(arr, partitionIndex + 1, right);
}
}
int partition(int *arr, int left, int right) {
int pivot = arr[right];
int i = (left - 1);
for (int j = left; j < right; j++) {
if (arr[j] < pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[right]);
return (i + 1);
}
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
int main() {
int array[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(array)/sizeof(array[0]);
quickSort(array, 0, n-1);
printf("Sorted array: \n");
for (int i = 0; i < n; i++) {
printf("%d ", array[i]);
}
return 0;
}
Use Case ของ Quick Sort ในโลกจริง:
Quick Sort มีประโยชน์อย่างมากในสถานการณ์ที่ต้องการเรียงข้อมูลในปริมาณมาก เช่น การจัดเรียงฐานข้อมูลผู้ใช้งานเพื่อค้นหาข้อมูลอย่างรวดเร็ว หรือการจัดเรียงสินค้าในระบบ e-commerce เพื่อแสดงผลลัพธ์การค้นหาได้มีประสิทธิภาพมากขึ้น
Complexity และข้อดีข้อเสียของ Quick Sort:
Complexity:
- เวลาเฉลี่ย (Average case): O(n log n)
- เวลาแย่ที่สุด (Worst case): O(n²)
- ความจุเมื่อใช้งานปกติ (Space Complexity): O(log n) เนื่องจากการใช้ stack space ในการเรียกฟังก์ชั่นเวลา dividing
ข้อดีของ Quick Sort:
- มีประสิทธิภาพสูงเมื่อเทียบกับวิธีการเรียงลำดับอื่นๆ
- ไม่ต้องมีพื้นที่เพิ่มเติมเนื่องจากเป็น in-place sort
- ปรับแต่งได้ง่าย เช่น การเลือก pivot
ข้อเสียของ Quick Sort:
- ไม่เสถียร (unstable), หมายความว่าสามารถเปลี่ยนลำดับของข้อมูลที่เท่ากันได้
- อาจเกิด worst case performance อย่างง่ายหาก pivot ที่ใช้ไม่เหมาะสม
ที่ EPT (Expert-Programming-Tutor) ถือเป็นสถานที่ที่เหมาะสมสำหรับการเริ่มต้นหรือเสริมสร้างทักษะโปรแกรมมิ่งเพื่อเตรียมตัวให้พร้อมเข้าสู่อุตสาหกรรมไอที ไม่เพียงแต่วิธีการเขียนโปรแกรมเช่นการใช้ Quick Sort ที่คุณจะได้เรียนรู้ เรายังมีหลักสูตรอื่นๆ ที่กว้างขวางซึ่งจะช่วยให้คุณสามารถประยุกต์และวิเคราะห์ปัญหาไอทีในระดับที่ลึกซึ้งกว่า ให้คุณได้พบกับโลกของการเขียนโปรแกรมที่ไม่มีขอบเขตกับเราที่ EPT วันนี้!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: quick_sort อัลกอริทึม เรียงลำดับ ภาษา_c การเขียนโปรแกรม การเรียนรู้ ประสิทธิภาพ ข้อดีข้อเสีย แบ่งแล้วครอง การจัดเรียงข้อมูล ประโยชน์ stack_space in-place_sort unstable worst_case_performance
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM