Saya pikir hal pertama yang perlu dipertimbangkan adalah operasi apa yang didukung?
Apakah "memasukkan nilai dengan kunci tetap tertentu" (mis. Untuk kunci yang diambil dari ranah integer, menyisipkan dengan kunci = 3) sesuai dengan operasi yang didukung untuk tumpukan min?
Tidak, karena operasi itu dapat diterapkan secara sepele dengan operasi yang didukung lebih umum. Demikian juga, memasukkan 2 elemen sekaligus dapat dilakukan dengan insert
operasi yang ada .
Di sisi lain, insert
operasi tidak dapat ditentukan selain dengan mengekspos detail implementasi. Ini hampir sama untuk operasi yang terdaftar di halaman wikipedia, heapify
kecuali, yang mungkin dapat diimplementasikan dengan urutan insert
.
Dengan kata lain, ada operasi dasar yang disediakan pada tipe, yang terikat erat dengan detail implementasi agar mereka dapat bekerja dengan baik, dan ada operasi lain, yang tidak mematuhi aturan itu, dan dengan demikian dapat diimplementasikan sebagai kombinasi dari yang kanonik.
Dengan mempertimbangkan definisi itu, apakah Anda berpikir bahwa peningkatan kunci dapat diimplementasikan dengan operasi lain yang didukung secara eksklusif, tanpa kehilangan kinerja? Jika demikian, maka itu bukan operasi yang didukung oleh definisi di atas, jika tidak, Anda mungkin benar.
Bisa dibilang, definisi operasi yang didukung yang saya berikan adalah milik saya, sejauh yang saya tahu. Itu tidak formal, dan karenanya harus didiskusikan (walaupun tampaknya cukup jelas bagi saya). Namun, saya akan senang jika seseorang dapat memberikan sumber yang dengan jelas dan jelas mendefinisikan apa operasi yang didukung untuk tipe data, atau setidaknya mendefinisikannya dalam istilah yang lebih baik daripada milik saya (apakah definisi yang diberikan dalam CLR? Saya tidak memiliki salinan ).
Poin kedua saya adalah bagaimana kita mendefinisikan antrian prioritas (yang merupakan raison d'être dari tumpukan biner). Apakah increase_key
operasi yang diperlukan untuk tipe data itu, yaitu untuk penggunaan yang tepat?
Seperti yang Anda lihat sudut saya adalah tentang definisi. Saya tidak benar-benar memberikan jawaban untuk pertanyaan Anda, hanya beberapa petunjuk, jadi penyempurnaan disambut.