Bubble Sort เป็นหนึ่งในอัลกอริทึมการเรียงลำดับที่เบื้องต้นและเข้าใจง่ายที่สุด ส่วนใหญ่ถูกใช้ในการสอนพื้นฐานของอัลกอริทึมการเรียงลำดับในทางทฤษฎีและการปฏิบัติเพื่อศึกษาหลักการของการเปรียบเทียบและการสลับที่ของข้อมูลในอาร์เรย์หรือลิสต์
อัลกอริทึมนี้ทำงานโดยการเปรียบเทียบคู่ของข้อมูลที่อยู่ติดกันและสลับที่หากข้อมูลด้านหน้ามีค่ามากกว่าข้อมูลด้านหลัง (สำหรับการเรียงจากน้อยไปมาก) กระบวนการนี้จะทำซ้ำไปเรื่อยๆจนกว่าไม่มีการสลับใดๆเกิดขึ้นอีกต่อไป ซึ่งนั่นหมายความว่าข้อมูลได้ถูกเรียงลำดับอย่างถูกต้องแล้ว
#include
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
// สลับตำแหน่งข้อมูล arr[j] และ arr[j+1]
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr, n);
printf("Array after sorting: ");
for (int i=0; i < n; i++)
printf("%d ", arr[i]);
return 0;
}
แม้ว่า Bubble Sort อาจไม่ใช่อัลกอริทึมที่มีประสิทธิภาพที่สุดในการการเรียงลำดับข้อมูลขนาดใหญ่หรือข้อมูลที่มีการกระจายอย่างไม่เท่าเทียมกัน แต่มันก็ยังมีความเหมาะสมในบางสถานการณ์ เช่นการเรียงลำดับข้อมูลขนาดเล็กหรือข้อมูลที่มีความถูกต้องเกือบครบถ้วนแล้ว อีกทั้งในการสอนและทดลองทางวิชาการ เนื่องจากมีการทำงานที่เรียบง่ายและเข้าใจง่าย
ข้อดี
ของ Bubble Sort คือมีการเขียนโค้ดที่เรียบง่าย ง่ายต่อการทำความเข้าใจ และมีการใช้งานหน่วยความจำเพิ่มเติมน้อยมาก อีกทั้งยังสามารถใช้ในการตรวจสอบว่าข้อมูลถูกเรียงลำดับโดยไม่ต้องเปลี่ยนแปลงลำดับของข้อมูลที่มีอยู่ข้อเสีย
ที่สำคัญที่สุดคือมีประสิทธิภาพไม่สูง เนื่องจากใช้เวลาทำงานมากในกรณีทั่วไปและเมื่อเทียบกับอัลกอริทึมการเรียงลำดับหลักอื่นๆ เช่น Quick Sort หรือ Merge Sort ที่มี Time complexity อยู่ที่ O(n log n)
เรียนรู้การเขียนโปรแกรมและการใช้อัลกอริทึมต่างๆ เป็นพื้นฐานสำคัญในวงการไอที หากคุณสนใจที่จะขุดลึกลงไปในการเขียนโปรแกรมและการแก้ปัญหาด้านคอมพิวเตอร์ต่างๆ ที่ EPT (Expert-Programming-Tutor) เรามีคลาสเรียนทั้งออนไลน์และเป็นตัวต่อตัว เพื่อช่วยสนับสนุนการเติบโตของคุณในฐานะนักพัฒนาซอฟต์แวร์ให้เต็มศักยภาพ สำรวจหลักสูตรของเราและเรียนรู้กับมืออาชีพที่จะนำคุณไปสู่การเป็นผู้เชี่ยวชาญทางการโปรแกรม!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: bubble_sort algorithm sorting c_programming array comparison programming_basics efficiency time_complexity best_case average_case worst_case
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM