อัลกอริทึม Python

Maximum Subarray ด้วยอัลกอริทึม Kadane

แต่ละตำแหน่งตัดสินใจว่าจะต่อช่วงเดิมหรือเริ่มใหม่

Maximum Subarray ด้วยอัลกอริทึม Kadane คืออะไร?

แต่ละตำแหน่งตัดสินใจว่าจะต่อช่วงเดิมหรือเริ่มใหม่

หาช่วงต่อเนื่องที่มีผลรวมมากที่สุด

ควรใช้เมื่อใด?

  • ทำความเข้าใจอัลกอริทึมและโครงสร้างข้อมูล
  • สังเกตแต่ละขั้นตอนและกรณีขอบ
  • เปรียบเทียบเวลาและหน่วยความจำ

โค้ดตัวอย่าง

รันโค้ด →
main.py
def maximum_subarray_sum(values):
    current = best = values[0]
    for value in values[1:]:
        current = max(value, current + value)
        best = max(best, current)
    return best

print(maximum_subarray_sum([-2, 1, -3, 4, -1, 2, 1, -5, 4]))

ผลลัพธ์ที่คาดหวัง

6

หลักการทำงาน

วนเพียงครั้งเดียว จึงใช้เวลา O(n) และหน่วยความจำ O(1)

เปลี่ยนค่าและรันโปรแกรมด้วย คอมไพเลอร์ Python ออนไลน์ของ CodeUtility โดยไม่ต้องติดตั้ง Python

แบบฝึกหัด

ลองเปลี่ยน input และทดสอบกรณีขอบก่อนใช้ชุดข้อมูลที่ใหญ่ขึ้น

  1. ทดสอบ input ว่าง หนึ่งสมาชิก และค่าซ้ำ
  2. แสดงสถานะหลังแต่ละขั้นตอน
  3. เปรียบเทียบประสิทธิภาพกับวิธีอื่น
รันใน Python IDE →