ฉันคิดว่าสิ่งแรกที่ต้องพิจารณาคือการดำเนินการที่ได้รับการสนับสนุนคืออะไร
"การแทรกค่าด้วยคีย์ที่เจาะจงและแน่นอน" (เช่นสำหรับคีย์ที่นำมาจากขอบเขตจำนวนเต็มการแทรกด้วย key = 3) สอดคล้องกับการดำเนินการที่ได้รับการสนับสนุนสำหรับฮีปขั้นต่ำหรือไม่
ไม่เพราะการดำเนินการนั้นสามารถนำไปปฏิบัติได้เล็กน้อยโดยมีการดำเนินงานที่สนับสนุนทั่วไป ในทำนองเดียวกันการแทรก 2 องค์ประกอบพร้อมกันสามารถทำได้ด้วยการinsert
ดำเนินการที่มีอยู่
ในทางตรงกันข้ามการinsert
ดำเนินการไม่สามารถกำหนดเป็นอย่างอื่นได้โดยเปิดเผยรายละเอียดการใช้งาน มันค่อนข้างเหมือนกันสำหรับการดำเนินการที่ระบุไว้ในหน้าวิกิพีเดียheapify
ยกเว้นซึ่งอาจมีการดำเนินการตามลำดับของinsert
ยกเว้นซึ่งอาจจะได้รับการดำเนินการโดยลำดับของ
กล่าวอีกนัยหนึ่งมีการดำเนินงานเบื้องต้นในประเภทซึ่งผูกพันกับรายละเอียดการนำไปปฏิบัติเพื่อให้ทำงานได้ดีและมีการดำเนินงานอื่น ๆ ที่ไม่ปฏิบัติตามกฎนั้นและอาจนำมาใช้เป็นชุดค่าผสม ของคนที่ยอมรับ
ด้วยความหมายในใจคุณคิดว่าจะสามารถใช้คีย์การเพิ่มกับการดำเนินการอื่น ๆ ที่สนับสนุนได้อย่างเต็มที่โดยไม่สูญเสียประสิทธิภาพหรือไม่ หากเป็นเช่นนั้นแสดงว่าไม่ได้รับการสนับสนุนตามข้อกำหนดข้างต้นมิฉะนั้นคุณอาจพูดถูก
ความหมายของการปฏิบัติการที่สนับสนุนที่ฉันให้นั้นเป็นของฉันเท่าที่ฉันรู้ มันไม่เป็นทางการและอยู่ภายใต้การสนทนา (แม้ว่าฉันจะค่อนข้างชัดเจนสำหรับฉัน) อย่างไรก็ตามฉันจะดีใจถ้ามีคนสามารถให้แหล่งข้อมูลที่ชัดเจนและชัดเจนว่าการดำเนินการที่สนับสนุนสำหรับประเภทข้อมูลหรืออย่างน้อยก็กำหนดไว้ในเงื่อนไขที่ดีกว่าของฉัน (เป็นคำนิยามที่กำหนดใน CLR หรือไม่ฉันไม่มีสำเนา )
จุดที่สองของฉันจะอยู่ที่วิธีที่เรากำหนดคิวลำดับความสำคัญ (ซึ่งเป็น raison d'êtreของไบนารีฮีป) การincrease_key
ดำเนินการที่จำเป็นสำหรับประเภทข้อมูลนั้นคือการใช้งานที่เหมาะสม?
อย่างที่คุณเห็นมุมของฉันนั้นเกี่ยวกับคำจำกัดความ ฉันไม่ได้ให้คำตอบสำหรับคำถามของคุณจริง ๆ มีเพียงพอยน์เตอร์บางคำเท่านั้นดังนั้นจึงยินดีรับการปรับปรุง