জাভাতে বাইনারি হিপ কীভাবে প্রয়োগ করতে হয় তা বুঝুন

এই নিবন্ধটি আপনাকে জাভাতে কীভাবে বাইনারি হিপকে উদাহরণ সহ প্ররোচিত করা যায় তার বিশদ এবং বিস্তৃত জ্ঞান সরবরাহ করবে।

এই নিবন্ধটি আপনাকে হ্যাপ সাজানোর কাজ সম্পর্কে একটি সম্পূর্ণ ওভারভিউ দেবে এবং পরে আমরা জাভাতে একটি বাইনারি হিপ বাস্তবায়ন করতে শিখব।



নতুনদের জন্য ভিজ্যুয়াল স্টুডিও টিউটোরিয়াল

এই নিবন্ধটির এজেন্ডা এখানে:



  1. হিপ বাছাই কি?
  2. সর্বোচ্চ গাদা
  3. ন্যূনতম গাদা
  4. জাভাতে গাদা বাস্তবায়ন
    • ডায়াগ্রাম
    • কোড

চল শুরু করি!

হিপ বাছাই কি?

গাদা মূলত একটি গাছ ভিত্তিক ডেটা কাঠামো। এটির নোড রয়েছে। নোডে কিছু উপাদান থাকে। প্রতিটি নোডে একটি উপাদান থাকে।



নোডের বাচ্চা থাকতে পারে। যদি কোনও সন্তান না থাকে তবে এটিকে লিফ বলা হয়।

দুটি নিয়ম অনুসরণ করতে হবে:

  • প্রতিটি নোডের মান অবশ্যই তার শিশুদের মধ্যে সঞ্চিত সমস্ত মানের তুলনায় কম বা সমান হতে হবে।
  • এটি কমপক্ষে সম্ভব উচ্চতা আছে।

গর্তগুলি উত্তোলনের ক্ষেত্রে অত্যন্ত দক্ষ extremelyন্যূনতম বা বৃহত্তম উপাদান element



চলুন এখন নিক্ষেপ করা যাক!

ন্যূনতম গাদা

ন্যূনতম হিপ একটি সম্পূর্ণ বাইনারি গাছ যাতে মূল উপাদানগুলির মান শিশু উপাদানগুলির চেয়ে কম বা সমান।

ন্যূনতম গাদা প্রতিনিধিত্ব

অ্যার [(আই -১) / ২]: এটি প্যারেন্ট নোডটি ফিরিয়ে দেবে।

একটি অ্যারে জাভাতে সর্বাধিক সংখ্যা সন্ধান করা

অ্যার [(২ * আমি) + ১]: এটি বাম শিশু নোডকে ফিরিয়ে দেবে।

অ্যার [(২ * আমি) + ২]: এটি ডান চাইল্ড নোডটি ফিরিয়ে দেবে।

মিন হ্যাপের কয়েকটি নির্দিষ্ট পদ্ধতি রয়েছে:

  • সন্নিবেশ (): গাছের শেষে একটি নতুন কী যুক্ত করা হয়েছে। যদি নতুন কীটি তারপরে পিতামাতার চেয়ে বড় হয়, তবে কিছু করার দরকার নেই, অন্যথায়, গাদা সম্পত্তি সেট আপ করতে আমাদেরকে ট্র্যাভার আপ করতে হবে।
  • getMin (): এই পদ্ধতিগুলি মূল উপাদানটি ফিরে পেতে সহায়তা করে।
  • এক্সট্রাক্টমিন (): এই পদ্ধতিটি সর্বনিম্ন প্রদান করেউপাদান।

এখন ম্যাক্স হিপ এ চলছে।

সর্বোচ্চ গাদা

ম্যাক্স হিপ একটি সম্পূর্ণ বাইনারি ট্রি যেখানে মূল উপাদানটির মান শিশু উপাদানগুলির যে কোনওটির চেয়ে বেশি বা সমান।

সর্বাধিক গাদা এছাড়াও বিভিন্ন পদ্ধতি নিয়ে গঠিত!

  • সন্নিবেশ (): এটি গাদা একটি উপাদান প্রবেশ করানো হবে।
  • মুছে ফেলা() : এটি গাদা থেকে একটি উপাদান মুছবে।
  • ফাইন্ডম্যাক্স (): এটি গাদা থেকে সর্বাধিক উপাদানটি খুঁজে পাবেন।
  • প্রিন্টহিপ (): এটি গাদা সামগ্রীটি মুদ্রণ করবে

এখন আমি আপনাকে একটি চিত্র এবং পরে একটি জাভা দিয়ে গাদা বাস্তবায়ন দেখাব showকোড

জাভাতে গাদা বাস্তবায়ন

চিত্র:

Heap

কীভাবে মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও ব্যবহার করবেন

উপরের চিত্রটি জাভায় বাইনারি হিপ দেখায়। আপনি যেমন জানতে পেরেছেন যে দুটি স্তূপ রয়েছে: ন্যূনতম হিপ এবং সর্বোচ্চ গাদা, এখানে একটি চিত্র রয়েছে:

এখন, আমাদের পরবর্তী বিভাগে চলে যাওয়া, আমরা দেখব কীভাবে জাভাতে বাইনারি হ্যাপ প্রয়োগ করা যায়।

কোড:

পাবলিক ক্লাস বাইনারিহ্যাপ {প্রাইভেট স্ট্যাটিক ফাইনাল ইন্ট ডি = 2 প্রাইভেট ইন্ট [] হিপ প্রাইভেট ইন হিপসাইজ / ** * এটি ডিফল্ট আকারের সাথে আমাদের গাদা শুরু করবে। * / সর্বজনীন বাইনারিহ্যাপ (আন্তঃরক্ষমতা) {হিপসাইজ = 0 হিপ = নতুন ইনট্রেস [ক্ষমতা + 1] অ্যারেজ.ফিল (হিপ, -1)} / ** * এটি পরীক্ষা করবে যে গাদাটি খালি আছে কিনা * জটিলতা: O ( 1) * / পাবলিক বুলিয়ান ইম্পতি () {রিটার্ন হিপসাইজ == 0} / ** * এটি খেকটি পূর্ণ কিনা তা পরীক্ষা করবে * জটিলতা: ও (1) * / পাবলিক বুলিয়ান সম্পূর্ণ () {রিটার্ন হিপসাইজ == হিপ । দৈর্ঘ্য} প্রাইভেট ইন প্যারেন্ট (ইনট আই) {রিটার্ন (আই -1) / ডি} প্রাইভেট ইন কেথচিল্ড (ইনট আই, ইনট কে) {রিটার্ন ডি * আই + কে} / ** * এটি নতুন উপাদানকে apোকাতে প্রবেশ করবে * জটিলতা: ও (লগ এন) * সবচেয়ে খারাপ পরিস্থিতি হিসাবে, আমাদের রুট পর্যন্ত অতিক্রম করতে হবে * / সার্বজনীন শূন্য প্রবেশকরণ (ইনট এক্স) {যদি (isFull ()) নতুন NoSuchElementException নিক্ষেপ করুন ('গাদা পূর্ণ, সন্নিবেশ করার জন্য কোনও স্থান নেই) নতুন উপাদান ') হিপ [হিপসাইজ ++] = এক্স হিপিফাইআউপি (হিপসাইজ -১)} / ** * এটি সূচক x এ জটিলতা মুছে ফেলবে: জটিলতা: ও (লগ এন) * * / পাবলিক ইনট ডিলিট (ইনট এক্স) {যদি (ইম্পতি হয়) ()) নতুন NoSuchElementException নিক্ষেপ করুন ('গাদা ফাঁকা আছে, মুছার জন্য কোনও উপাদান নেই') int কী = হিপ [x] হিপ [x] = হিপ [হিপসাইজ -1] হিপসাইজ - হিপিফাইডাউন (এক্স) রেটু rn key} / ** * একটি উপাদান সন্নিবেশ করার সময় এই পদ্ধতিটি গাদা সম্পত্তি বজায় রাখতে ব্যবহৃত হয়। * * / প্রাইভেট অকার্যকর হিপিফাইআপ (ইনট আই) {ইন্ট টেম্পে = হিপ [আই] থাকাকালীন (i> 0 && টেমপ্লেট> হিপ [প্যারেন্ট (i)]) {হিপ [i] = হিপ [পিতা-মাতা (i)] i = পিতা (i) ap হিপ [i] = অস্থায়ী} / ** * কোনও উপাদান মোছার সময় এই পদ্ধতিটি গাদা সম্পত্তি বজায় রাখতে ব্যবহৃত হয়। * * / প্রাইভেট শূন্যতা হিপিফাইডডাউন (ইনট্রি আই) {ইনট চাইল্ড ইন্ট টেম্প্প = হিপ [আই] থাকাকালীন (কেটিচাইল্ড (i, 1)হিপ [রাইটচাইল্ড]? বামচিল্ড: রাইটচিল্ড} / ** * এই পদ্ধতিটি হিপ * * / সার্বজনীন শূন্য প্রিন্টহীপ () {System.out.print ('nHeap =') এর (int i = 0 i) জন্য সমস্ত উপাদান মুদ্রণ করতে ব্যবহৃত হয়

এটির সাথে আমরা জাভায় বাইনারি হিপ নিয়ে এই নিবন্ধটি শেষ করেছি। দেখুন এডুরেকা, বিশ্বস্ত জুড়ে 250,000 এরও বেশি সন্তুষ্ট শিক্ষার্থীর নেটওয়ার্ক সহ একটি বিশ্বস্ত অনলাইন লার্নিং সংস্থা by এডুরেকার জাভা জে 2 ইই এবং এসওএ প্রশিক্ষণ এবং শংসাপত্রের কোর্সটি এমন শিক্ষার্থী এবং পেশাদারদের জন্য তৈরি করা হয়েছে যারা জাভা ডেভেলপার হতে চান। কোর্সটি আপনাকে জাভা প্রোগ্রামিংয়ে একটি প্রধান সূচনা দেওয়ার জন্য এবং হাইবারনেট ও স্প্রিংয়ের মতো বিভিন্ন জাভা ফ্রেমওয়ার্কের পাশাপাশি মূল এবং উন্নত জাভা উভয় ধারণার জন্য প্রশিক্ষণের জন্য তৈরি করা হয়েছে।

আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এই 'জাভা অ্যারেলিস্ট' ব্লগের মন্তব্য বিভাগে উল্লেখ করুন এবং আমরা যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।