เผยแพร่เมื่อ

บิ๊ก โอ โนเตชั่น 101: ความลับในการเขียนอัลกอริทึมที่มีประสิทธิภาพ

ผู้เขียน

ตั้งแต่การดำเนินการอาร์เรย์แบบง่ายไปจนถึงอัลกอริทึมการเรียงลำดับที่ซับซ้อน การเข้าใจการแสดง Big O เป็นสิ่งสำคัญสำหรับการสร้างโซลูชันซอฟต์แวร์ที่มีประสิทธิภาพสูง

Image

1 - O(1)

นี่คือการแสดงเวลาคงที่ (constant time notation) เวลาที่ใช้ในการทำงานจะคงเท่าเดิม ไม่ว่าขนาดของข้อมูลเข้าจะเท่าใด ตัวอย่างเช่น การเข้าถึงองค์ประกอบในอาร์เรย์โดยใช้ดัชนี และการแทรก/ลบองค์ประกอบในตารางแฮช

2 - O(n)

การแสดงเวลาที่เป็นเส้นตรง (linear time notation) เวลาที่ใช้ในการทำงานจะเพิ่มขึ้นตามขนาดของข้อมูลเข้าโดยตรง ตัวอย่างเช่น การค้นหาค่าสูงสุดหรือต่ำสุดในอาร์เรย์ที่ไม่ได้เรียงลำดับ

3 - O(log n)

การแสดงเวลาที่เป็นลอการิทึม (logarithmic time notation) เวลาที่ใช้ในการทำงานจะเพิ่มขึ้นอย่างช้าๆ เมื่อขนาดของข้อมูลเข้าเพิ่มขึ้น ตัวอย่างเช่น การค้นหาแบบทวินาม (binary search) ในอาร์เรย์ที่เรียงลำดับ และการดำเนินการในต้นไม้แบบทวินามที่สมดุล

4 - O(n^2)

การแสดงเวลาที่เป็นกำลังสอง (quadratic time notation) เวลาที่ใช้ในการทำงานจะเพิ่มขึ้นอย่างรวดเร็วตามขนาดของข้อมูลเข้า ตัวอย่างเช่น อัลกอริทึมการเรียงลำดับแบบง่ายๆ เช่น bubble sort, insertion sort และ selection sort

5 - O(n^3)

การแสดงเวลาที่เป็นลูกบาศก์ (cubic time notation) เวลาที่ใช้ในการทำงานจะเพิ่มขึ้นอย่างรวดเร็วเมื่อขนาดของข้อมูลเข้าเพิ่มขึ้น ตัวอย่างเช่น การคูณเมทริกซ์แบบหนาแน่นโดยใช้อัลกอริทึมแบบง่ายๆ

6 - O(n logn)

การแสดงเวลาที่เป็นลิเนียริทมิก (linearithmic time notation) นี่คือการผสมผสานระหว่างการเติบโตแบบเส้นตรงและลอการิทึม ตัวอย่างเช่น อัลกอริทึมการเรียงลำดับที่มีประสิทธิภาพ เช่น merge sort, quick sort และ heap sort

7 - O(2^n)

การแสดงเวลาที่เป็นเลขชี้กำลัง (exponential time notation) เวลาที่ใช้ในการทำงานจะเพิ่มขึ้นเป็นสองเท่าสำหรับแต่ละองค์ประกอบใหม่ของข้อมูลเข้า ตัวอย่างเช่น อัลกอริทึมแบบเรียกซ้ำ (recursive algorithm) ที่แก้ปัญหาโดยแบ่งปัญหาเป็นปัญหาย่อยๆ

8 - O(n!)

การแสดงเวลาที่เป็นตัวประกอบ (factorial time notation) เวลาที่ใช้ในการทำงานจะเพิ่มขึ้นอย่างรวดเร็วเมื่อขนาดของข้อมูลเข้าเพิ่มขึ้น ตัวอย่างเช่น ปัญหาการสร้างลำดับ (permutation-generation problem)

9 - O(sqrt(n))

การแสดงเวลาที่เป็นรากที่สอง (square root time notation) เวลาที่ใช้ในการทำงานจะเพิ่มขึ้นตามรากที่สองของขนาดของข้อมูลเข้า ตัวอย่างเช่น การค้นหาในพิสัย (range search) เช่น การใช้ Sieve of Eratosthenes ในการค้นหาตัวประกอบเฉพาะทั้งหมดจนถึง n

โปรดทราบว่าเวอร์ชันภาษาไทยได้รับการช่วยเหลือจาก AI ดังนั้นอาจมีข้อผิดพลาดเล็กน้อย

ผู้เขี���น

Ai Base Network (ABN), ABN ASIA ถูกก่อตั้งขึ้นโดยคนที่มีรากฐานลึกในวงการวิชาการ มีประสบการณ์การทำงานในสหรัฐอเมริกา ดัตช์ ฮังการี ญี่ปุ่น เกาหลีใต้ สิงคโปร์ และเวียดนาม ABN Asia เป็นที่เราพบกันของวิทยาลัยและเทคโนโลยี ด้วยโซลูชันขั้นสูงและบริการพัฒนาซอฟต์แวร์ที่มีความสามารถ เราช่วยธุรกิจเติบโตและเข้าสู่ฉากโลก ความมุ่งมั่นของเรา: ด่วนขึ้น ดีขึ้น น่าเชื่อถือมากขึ้น ในกรณีส่วนมาก: ราคาถูกด้วย

หากคุณต้องการบริการ IT การให้คำปรึกษาดิจิทัล โซลูชันซอฟต์แวร์ใช้ได้หรือหากคุณต้องการส่งคำขอข้อเสนอ (RFPs) อย่าลังเลที่จะติดต่อเรา คุณสามารถติดต่อเราได้ที่ [email protected] เราพร้อมช่วยเหลือคุณด้านทุกความต้องกรทางเทคโนโลยีของคุณทุกเมื่อ

ABNAsia.org

© ABN ASIA