คุณสามารถค้นหาไบนารีในรายการที่เชื่อมโยงได้หรือไม่
คุณสามารถค้นหาไบนารีในรายการที่เชื่อมโยงได้หรือไม่

วีดีโอ: คุณสามารถค้นหาไบนารีในรายการที่เชื่อมโยงได้หรือไม่

วีดีโอ: คุณสามารถค้นหาไบนารีในรายการที่เชื่อมโยงได้หรือไม่
วีดีโอ: CONVERT BINARY SEARCH TREE TO SORTED DOUBLY LINKED LIST (Leetcode) - Code & Whiteboard 2024, พฤศจิกายน
Anonim

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

ความซับซ้อนของเวลาจะเป็นอย่างไรเมื่อใช้การค้นหาแบบไบนารีในรายการที่เชื่อมโยง

ความซับซ้อนของเวลา ไม่ควรเกิน O(log n) เนื่องจาก รายการที่เชื่อมโยงไม่ ไม่ให้เข้าถึงโดยสุ่มถ้าเราพยายามที่จะ ใช้การค้นหาแบบไบนารี อัลกอริทึมมัน จะ ถึง O(n) ตามที่เราต้องการ หา ความยาวของ รายการ และไปตรงกลาง

ทราบด้วยว่าการค้นหาแบบไบนารีมีการใช้งานอย่างไร? ค้นหาไบนารี : ค้นหา อาร์เรย์ที่เรียงลำดับโดยการหาร.ซ้ำๆ ค้นหา แบ่งครึ่ง. เริ่มต้นด้วยช่วงเวลาที่ครอบคลุมทั้งอาร์เรย์ ถ้าค่าของ ค้นหา คีย์มีค่าน้อยกว่ารายการที่อยู่ตรงกลางของช่วงเวลา ให้จำกัดช่วงเวลาให้แคบลงเหลือครึ่งล่าง มิฉะนั้นให้แคบลงไปที่ครึ่งบน

การค้นหาแบบไบนารีใช้วิธีใดเพื่อค้นหาองค์ประกอบในรายการ

ค้นหาไบนารี ทำงานบนอาร์เรย์ที่เรียงลำดับ ค้นหาไบนารี เริ่มต้นด้วยการเปรียบเทียบ an ธาตุ ตรงกลางอาร์เรย์กับเป้าหมาย ค่า . ถ้าเป้าหมาย ค่า ตรงกับ ธาตุ ตำแหน่งในอาร์เรย์จะถูกส่งคืน ถ้าเป้าหมาย ค่า น้อยกว่า ธาตุ , NS ค้นหา ดำเนินต่อไปในครึ่งล่างของอาร์เรย์

คุณจะวนซ้ำผ่านรายการที่เชื่อมโยงได้อย่างไร?

หนึ่ง ตัววนซ้ำ สามารถใช้วนซ้ำได้ ผ่าน NS LinkedList . เมธอด hasNext() คืนค่า จริง หากมีองค์ประกอบเพิ่มเติมใน LinkedList และเท็จเป็นอย่างอื่น วิธีการ next() คืนค่าองค์ประกอบถัดไปใน LinkedList และโยนข้อยกเว้น NoSuchElementException หากไม่มีองค์ประกอบถัดไป