กลับไปหน้าบทความ

อ่าน 1 นาที

การค้นหาแบบไบนารีแบบคูณ

ใน วิทยาการคอมพิวเตอร์ การ ค้นหาแบบไบนารีเชิงคูณ เป็นรูปแบบหนึ่งของ การค้นหาแบบไบนารี...

การค้นหาแบบไบนารีแบบคูณ

การค้นหาแบบไบนารีแบบคูณ
ภาพแสดงการทำงานของอัลกอริธึมการค้นหาแบบไบนารีเชิงคูณ โดยที่ 7 คือค่าเป้าหมาย
ระดับอัลกอริทึมการค้นหา
โครงสร้างข้อมูลอาร์เรย์
ประสิทธิภาพในกรณีที่เลวร้ายที่สุดO (log n )
ประสิทธิภาพในกรณีที่ดีที่สุดO (1)
ประสิทธิภาพโดยเฉลี่ยO (log n )
ความซับซ้อนของพื้นที่ในกรณีที่เลวร้ายที่สุดO (1)
เหมาะสมที่สุดใช่

ในวิทยาการคอมพิวเตอร์การค้นหาแบบไบนารีเชิงคูณเป็นรูปแบบหนึ่งของการค้นหาแบบไบนารีที่ใช้การเรียงสับเปลี่ยนเฉพาะของคีย์ในอาร์เรย์แทนที่จะใช้ลำดับที่เรียงแล้วเหมือนกับการค้นหาแบบไบนารีทั่วไป[ 1 ] การค้นหาแบบไบนารีเชิงคูณได้รับการอธิบายครั้งแรกโดย Thomas Standish ในปี 1980 อัลกอริทึมนี้ได้รับการเสนอขึ้นมาเพื่อลดความซับซ้อนของการคำนวณดัชนีจุดกึ่งกลางบนคอมพิวเตอร์ขนาดเล็กที่ไม่มีการหารหรือการเลื่อนที่มีประสิทธิภาพ บนฮาร์ดแวร์สมัยใหม่ ลักษณะ ที่เป็นมิตรกับ แคชของการค้นหาแบบไบนารีเชิงคูณทำให้เหมาะสำหรับ การค้นหาแบบ out-of-coreบน ที่เก็บข้อมูล แบบบล็อกเป็นทางเลือกแทนB-treeและB+-treeเพื่อประสิทธิภาพที่ดีที่สุดปัจจัยการแตกกิ่งของ B-tree หรือ B+-tree ต้องตรงกับขนาดบล็อกของระบบไฟล์ที่จัดเก็บอยู่ การเรียงสับเปลี่ยนที่ใช้โดยการค้นหาแบบไบนารีเชิงคูณจะวางจำนวนคีย์ที่เหมาะสมที่สุดในบล็อกแรก ( รูท ) โดยไม่คำนึงถึงขนาดบล็อก

การค้นหาไบนารีแบบคูณถูกใช้โดยคอมไพเลอร์ที่เพิ่มประสิทธิภาพ บางตัว เพื่อใช้งาน คำ สั่งswitch [ 2 ] [ 3 ]

อัลกอริทึม

การค้นหาแบบไบนารีเชิงคูณทำงานกับอาร์เรย์ที่เรียงลำดับแล้วและสลับตำแหน่ง คีย์จะถูกเก็บไว้ในอาร์เรย์ตามลำดับระดับของต้นไม้ค้นหาแบบไบนารี ที่สมดุล ซึ่งจะทำให้จุดหมุนแรกของการค้นหาแบบไบนารีเป็นองค์ประกอบแรกในอาร์เรย์ จุดหมุนที่สองจะถูกวางไว้ในสองตำแหน่งถัดไป

กำหนดให้ มี อาร์เรย์Aที่มีnองค์ประกอบ โดยมีค่าA 0 ... A n −1และค่าเป้าหมายT รูทีนย่อยต่อไปนี้ใช้การค้นหาแบบไบนารีเชิงคูณเพื่อหาดัชนีของTในA

  1. ตั้งค่าiเป็น 0
  2. ถ้าinการค้นหาจะสิ้นสุดลงโดยไม่ประสบความสำเร็จ
  3. ถ้า A i = Tแสดงว่าการค้นหาเสร็จสิ้นแล้ว ให้ส่งคืนi
  4. ถ้า A i > Tให้ตั้งค่าiเป็น 2× i + 1 แล้วไปที่ขั้นตอนที่ 2
  5. ถ้า A i < Tให้ตั้งค่าiเป็น 2× i + 2 แล้วไปที่ขั้นตอนที่ 2

ดูเพิ่มเติม

การอ้างอิง

  1. ^ Standish, Thomas A. (1980). "บทที่ 4.2.2: การค้นหาในตารางเรียงลำดับ". เทคนิคโครงสร้างข้อมูล . Addison-Wesley. หน้า  136–141 . ISBN 978-0201072563.
  2. ^ Sayle, Roger A. (17 มิถุนายน 2551). "การวิเคราะห์ Superoptimizer ของการสร้างรหัสสาขาแบบหลายทาง" (PDF) . รายงานการ ประชุมสุดยอดนักพัฒนา GCC : 103–116 . สืบค้นเมื่อ4 มีนาคม 2560 .
  3. ^ Spuler, David A. (มกราคม 1994). การสร้างโค้ดคอมไพเลอร์สำหรับคำสั่งแยกสาขาหลายทางในฐานะปัญหาการค้นหาแบบคงที่ (รายงานทางเทคนิค). ภาควิชาวิทยาการคอมพิวเตอร์ มหาวิทยาลัยเจมส์ คุก ประเทศออสเตรเลีย. 94/03.
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Multiplicative_binary_search&oldid=1276207828 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การค้นหาแบบไบนารีแบบคูณ

ใน วิทยาการคอมพิวเตอร์ การ ค้นหาแบบไบนารีเชิงคูณ เป็นรูปแบบหนึ่งของ การค้นหาแบบไบนารี...

อัลกอริทึม

การค้นหาแบบไบนารีเชิงคูณทำงานกับอาร์เรย์ที่เรียงลำดับแล้วและสลับตำแหน่ง คีย์จะถูกเก็บไว้ในอาร์เรย์ตามลำดับระดับของ ต้นไม้ค้นหาแบบไบนารี ที่สมดุล ซึ่งจะทำให้จุดหมุนแรกของการค้นหาแบบไบนารีเป็นองค์ประกอบแรกในอาร์เรย์ จุดหมุนที่สองจะถูกวางไว้ในสองตำแหน่งถัดไป

ดูเพิ่มเติม

ต้นไม้ค้นหาแบบไบนารี – โครงสร้างข้อมูลต้นไม้ไบนารีแบบมีราก วิธีการจัดเก็บโครงสร้างข้อมูลแบบต้นไม้ไบนารี – รูปแบบจำกัดของโครงสร้างข้อมูลแบบต้นไม้ อาเนนทาเฟล – ระบบการกำหนดหมายเลขทางลำดับวงศ์ตระกูลเพื่อระบุบรรพบุรุษโดยตรงของบุคคล

การอ้างอิง

^ Standish, Thomas A. (1980). "บทที่ 4.2.2: การค้นหาในตารางเรียงลำดับ". เทคนิคโครงสร้างข้อมูล . Addison-Wesley. หน้า 136–141 . ISBN 978-0201072563 . ^ Sayle, Roger A. (17 มิถุนายน 2551). "การวิเคราะห์ Superoptimizer ของการสร้างรหัสสาขาแบบหลายทาง" (PDF) .