1.ง่าย
ฟังก์ชันแฮชทำอะไรในตารางแฮช
- Aเรียงคีย์ในตาราง
- Bเข้ารหัสค่าในตาราง
- Cนับว่ามีกี่คีย์ที่เก็บอยู่
- Dแปลงคีย์เป็นดัชนีในตาราง
2.ง่าย
สมาชิกของอาร์เรย์ถูกเก็บในหน่วยความจำอย่างไร
- Aในตำแหน่งสุ่มที่เลือกด้วยแฮช
- Bในต้นไม้ของหน้าหน่วยความจำ
- Cในบล็อกต่อเนื่องเดียว ต่อกันทีละตัว
- Dกระจัดกระจาย เชื่อมด้วยตัวชี้
3.ง่าย
ลักษณะเด่นของเซต (set) ในฐานะชนิดข้อมูลนามธรรมคืออะไร
- Aเก็บคู่คีย์–ค่า
- Bเก็บสมาชิกเรียงลำดับ
- Cเก็บสมาชิกโดยไม่มีซ้ำ
- Dเข้าถึงได้เฉพาะที่ปลายด้านเดียว
4.ปานกลาง
extract-min ใน min-heap ทวิภาคทำงานอย่างไร
- Aย้ายสมาชิกสุดท้ายไปที่รากและเลื่อนลง (sift down)
- Bลบสมาชิกสุดท้ายของอาร์เรย์
- Cลบรากและเลื่อนสมาชิกทั้งหมดไปทางซ้ายหนึ่งตำแหน่ง
- Dค้นหาใบทั้งหมดเพื่อหาค่าต่ำสุดใหม่
5.ปานกลาง
ทราย (trie หรือ prefix tree) มีประสิทธิภาพเป็นพิเศษสำหรับ
- Aการเก็บเมทริกซ์
- Bการเรียงตัวเลข
- Cการหาเส้นทางสั้นที่สุด
- Dการค้นหาด้วยคำนำหน้า เช่น autocomplete
6.ปานกลาง
เหตุใดฮีปทวิภาคจึงเก็บในอาร์เรย์ได้โดยไม่ต้องใช้ตัวชี้
- Aอาร์เรย์เก็บคีย์ให้เรียงลำดับโดยอัตโนมัติ จึงไม่ต้องใช้ตัวชี้
- Bฮีปมีสมาชิกไม่เกิน 100 ตัวเสมอ
- Cเป็นต้นไม้ทวิภาคสมบูรณ์ ตำแหน่งจึงเป็นไปตามสูตรดัชนีง่าย ๆ
- Dคีย์ทั้งหมดในฮีปเท่ากัน
7.ยาก
radix tree (compressed trie) ปรับปรุง trie ธรรมดาอย่างไร
- Aรวมโซ่ของโหนดที่มีลูกตัวเดียวเป็นเส้นเชื่อมเดียวที่ติดป้ายด้วยสตริง
- Bเรียงลูกของแต่ละโหนดตามความถี่
- Cเก็บเฉพาะตัวอักษรแรกของแต่ละคำ
- Dเก็บแต่ละคำไว้ในตารางแฮชที่ราก แทนที่จะเก็บในโหนดแยกกัน
8.ยาก
หากไม่มี union by rank หรือ path compression ต้นทุนในกรณีเลวร้ายที่สุดของ find หนึ่งครั้งในโครงสร้าง union-find ที่มี n สมาชิกคือเท่าใด
- AO(α(n))
- BO(log n)
- CO(n)
- DO(1)
เฉลย
- 1. D · แปลงคีย์เป็นดัชนีในตาราง
- 2. C · ในบล็อกต่อเนื่องเดียว ต่อกันทีละตัว
- 3. C · เก็บสมาชิกโดยไม่มีซ้ำ
- 4. A · ย้ายสมาชิกสุดท้ายไปที่รากและเลื่อนลง (sift down)
- 5. D · การค้นหาด้วยคำนำหน้า เช่น autocomplete
- 6. C · เป็นต้นไม้ทวิภาคสมบูรณ์ ตำแหน่งจึงเป็นไปตามสูตรดัชนีง่าย ๆ
- 7. A · รวมโซ่ของโหนดที่มีลูกตัวเดียวเป็นเส้นเชื่อมเดียวที่ติดป้ายด้วยสตริง
- 8. C · O(n)
เฉลยทีละขั้นตอนฉบับเต็ม: ฝึกหัวข้อนี้ได้ที่ examproblems.com