นับการดำเนินการด้วย Big-O
ตั้งแต่ค่าคงที่ถึงกำลังสองในภาษาที่เข้าใจง่าย
นับการดำเนินการด้วย Big-O เป็นบทเรียน Competitive Programming Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Competitive Programming Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Competitive Programming Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุผลที่ต้องนับการดำเนินการ
ในการแข่งขัน ความเร็วเป็นสิ่งสำคัญ แทนที่จะจับเวลาโค้ด คุณจะประเมินว่าต้องใช้กี่ขั้นตอน ค่าประเมินนั้นเรียกว่า ความซับซ้อนเชิงเวลา 🚀
ทำความรู้จัก Big-O
Big-O อธิบายว่าจำนวนการดำเนินการเติบโตขึ้นอย่างไรเมื่อขนาดข้อมูลขาเข้า n เพิ่มขึ้น โดยไม่นับรายละเอียดเล็กน้อยและมุ่งเน้นที่แนวโน้มหลัก
เวลาเชิงคงที่ O(1)
เมื่อการทำงานไม่ขึ้นกับ n การทำงานนั้นมีค่าเป็น O(1) การอ่านสมาชิกหนึ่งรายการหรือการบวกหนึ่งครั้งใช้เวลาเท่ากันเสมอ
x = arr[0]
y = a + bเวลาเชิงเส้น O(n)
ลูปง่าย ๆ ที่วนผ่านรายการ n รายการมีความซับซ้อนเป็น O(n) เมื่อข้อมูลขาเข้าเพิ่มเป็นสองเท่า งานก็จะเพิ่มขึ้นประมาณสองเท่า นี่คือรูปแบบงานหลักที่ใช้ในชีวิตประจำวัน
for x in arr:
total += xเวลาเชิงกำลังสอง O(n^2)
ลูปหนึ่งที่อยู่ภายในอีกลูปหนึ่งและวนผ่านรายการ n รายการมีความซับซ้อนเป็น O(n^2) เมื่อ n = 1000 จะมีหนึ่งล้านขั้นตอน และหลังจากนั้นจะเติบโตอย่างรวดเร็ว
for i in range(n):
for j in range(n):
check(i, j)เวลาเชิงลอการิทึม O(log n)
เมื่อแต่ละขั้นตอนลดปัญหาเหลือครึ่งหนึ่ง คุณจะได้ O(log n) การค้นหาแบบทวิภาคสามารถจัดการรายการหนึ่งพันล้านรายการได้ในประมาณ 30 ขั้นตอนเท่านั้น ✨
ลำดับการเติบโต
จากเร็วที่สุดไปช้าที่สุด ลำดับความซับซ้อนที่พบบ่อยคือ O(1), O(log n), O(n), O(n log n), O(n^2) ยิ่งอยู่ด้านบนก็ยิ่งรองรับขนาดที่เพิ่มขึ้นได้ดี
ตัดค่าคงที่ออก
Big-O ไม่สนใจตัวคูณคงที่ ดังนั้น O(2n) จึงเป็น O(n) การวนผ่านข้อมูลสองรอบยังคงเติบโตแบบเชิงเส้น ตัวคูณจึงไม่เปลี่ยนประเภทของความซับซ้อน
เก็บเฉพาะพจน์ที่ใหญ่ที่สุด
เมื่อพจน์ต่าง ๆ ถูกนำมาบวกกัน จะนับเฉพาะพจน์ที่เติบโตเร็วที่สุด O(n^2 + n) จึงย่อเป็น O(n^2) เพราะเมื่อ n เพิ่มขึ้น n^2 จะมีขนาดใหญ่กว่า n มาก
ลูปต่อเนื่องเทียบกับลูปซ้อน
ลูปสองลูปที่ทำงานต่อกันจะรวมกันเป็น O(n + n) = O(n) ส่วนลูปสองลูปที่ซ้อนกันจะคูณกันเป็น O(n^2) รูปแบบของลูปจะบอกคุณได้ว่าเป็นกรณีใด
พิจารณากรณีเลวร้ายที่สุดก่อน
การแข่งขันตัดสินจากชุดทดสอบที่ยากที่สุด ดังนั้นคุณจึงต้องวิเคราะห์ กรณีเลวร้ายที่สุด ให้สมมติว่าลูปทำงานครบ ไม่ใช่หยุดก่อนเวลา
ตรวจสอบอย่างรวดเร็ว
ได้เวลาทดสอบความเข้าใจเรื่อง Big-O ของคุณแล้ว
ทบทวน
ตอนนี้คุณอ่านโค้ดในแง่การเติบโตได้แล้ว: O(1), O(n), O(n^2) และ O(log n) ตัดค่าคงที่ออก เก็บพจน์ที่ใหญ่ที่สุด และคิดถึงกรณีเลวร้ายที่สุด 🎯
คำถามที่พบบ่อย
บทเรียน “นับการดำเนินการด้วย Big-O” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “นับการดำเนินการด้วย Big-O” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Competitive Programming Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Competitive Programming Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “นับการดำเนินการด้วย Big-O”
ตั้งแต่ค่าคงที่ถึงกำลังสองในภาษาที่เข้าใจง่าย คุณปฏิบัติ Competitive Programming Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Competitive Programming Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Competitive Programming Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “นับการดำเนินการด้วย Big-O” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Competitive Programming Academy นี้ได้ไหม
ได้ บทเรียน Competitive Programming Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- นับการดำเนินการด้วย Big-O
- หลักคร่าว ๆ 10^8
- อ่านข้อจำกัดและเลือกความซับซ้อน
- เหตุใดจึงเกิด TLE และจะสังเกตได้อย่างไร