Linear Search หรือที่เรียกว่า การค้นหาแบบเชิงเส้น เป็นหนึ่งในวิธีการค้นหาข้อมูลที่ง่ายที่สุด โดยการค้นหาจะทำงานโดยการตรวจสอบแต่ละองค์ประกอบในรายการทีละส่วนเพื่อหาค่าที่ต้องการ วิธีนี้มักใช้ในกรณีที่รายการข้อมูลไม่เรียงลำดับ (unordered list) ซึ่งทำให้การค้นหาข้อมูลเป็นไปอย่างตรงไปตรงมา
หลักการทำงานของ Linear Search คือ เริ่มต้นจากการตรวจสอบองค์ประกอบแรกในรายการ และทำการเปรียบเทียบค่ากับค่าที่เราต้องการ ถ้าพบว่าตรงกันก็จะส่งคืนตำแหน่งของค่าที่พบ หากไม่มีการตรงกันจนถึงองค์ประกอบสุดท้ายในรายการ จะส่งคืนค่า 'ไม่พบ' (not found)
ตัวอย่าง Use Case ในโลกจริง
ลองนึกภาพกรณีที่คุณมีรายชื่อผู้ติดต่อของเพื่อนในโทรศัพท์ และคุณต้องการค้นหาเพื่อนที่ชื่อ "สมชาย" แต่รายชื่อเหล่านี้ไม่ได้ถูกจัดเรียงตามลำดับใดๆ คุณจึงต้องตรวจสอบชื่อตนเองทีละชื่อจนกว่าจะเจอ
ด้านล่างนี้คือโค้ดตัวอย่างการค้นหาแบบเชิงเส้นในภาษา Fortran:
การอธิบายโค้ด:
1. เราเริ่มด้วยการประกาศตัวแปรต่างๆ รวมถึงตัวแปรที่ใช้ในการจัดเก็บข้อมูล
2. จากนั้นเราจะขอให้ผู้ใช้ป้อนจำนวนองค์ประกอบ รายการข้อมูล และค่าที่ต้องการค้นหา
3. ฟังก์ชันการค้นหาแบบเชิงเส้นจะถูกสร้างขึ้นโดยใช้ลูป `do` เพื่อตรวจสอบแต่ละองค์ประกอบ
4. ถ้าพบค่าที่ต้องการ ก็จะส่งคืนตำแหน่งที่พบ
Time Complexity สำหรับ Linear Search คือ O(n) ซึ่ง n คือจำนวนขององค์ประกอบในรายการ ดังนั้นเวลาในการค้นหาจะเพิ่มขึ้นอย่างตรงตามจำนวนข้อมูล ถ้าข้อมูลมากขึ้น เวลาก็จะมากขึ้นตามลำดับ
ข้อดี:
1. ความเรียบง่ายในการเข้าใจ: Linear Search เป็นวิธีที่ง่ายที่สุดในการค้นหาข้อมูล ทำให้ผู้เริ่มต้นสามารถเข้าใจได้ง่าย 2. ไม่ต้องการการจัดเรียงข้อมูล: ไม่จำเป็นต้องเรียงลำดับข้อมูลก่อนจึงจะสามารถค้นหาได้ ทำให้สามารถใช้งานได้ในสถานการณ์ที่หลากหลายข้อเสีย:
1. ประสิทธิภาพต่ำ: Linear Search ไม่สามารถแข่งขันกับวิธีการค้นหาอื่น ๆ ได้เมื่อมีข้อมูลจำนวนมาก เนื่องจากการค้นหาแบบเชิงเส้นต้องตรวจสอบทุกองค์ประกอบ 2. ใช้เวลานานกว่าการค้นหารูปแบบอื่น: เช่น Binary Search ซึ่งมี Time Complexity เท่ากับ O(log n) เมื่อข้อมูลถูกจัดเรียง
Linear Search เป็นวิธีการค้นหาข้อมูลที่เหมาะสำหรับรายการข้อมูลเล็กๆ หรือในกรณีที่ไม่ต้องการการเรียงลำดับข้อมูล ในทางปฏิบัติ Linear Search แตกต่างจากวิธีการอื่นๆ ที่สามารถใช้ได้แต่สำหรับคนที่เริ่มต้นเรียนรู้การเขียนโปรแกรม การเข้าใจ Linear Search ถือเป็นพื้นฐานที่ดี
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโปรแกรม หรือต้องการธุรกรรมโค้ดที่ซับซ้อนกว่า อย่าลืมพิจารณาเข้าร่วมชั้นเรียนที่ EPT (Expert-Programming-Tutor) เพื่อฝึกฝนที่ทำให้คุณเก่งขึ้นในสายนี้!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: java c# vb.net python c c++ machine_learning web database oop cloud aws ios android
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM