ஜாவாவில் பைனரி குவியலை எவ்வாறு செயல்படுத்துவது என்பதைப் புரிந்து கொள்ளுங்கள்



ஜாவாவில் ஒரு பைனரி குவியலை எவ்வாறு எடுத்துக்காட்டுவது என்பதற்கான விரிவான மற்றும் விரிவான அறிவை இந்த கட்டுரை உங்களுக்கு வழங்கும்.

இந்த கட்டுரை குவியல் வரிசையாக்கத்தின் முழுமையான கண்ணோட்டத்தை உங்களுக்கு வழங்கும், பின்னர் ஜாவாவில் பைனரி குவியலை செயல்படுத்த கற்றுக்கொள்வோம்.

இந்த கட்டுரையின் நிகழ்ச்சி நிரல் இங்கே:





c ++ கோட்டோ அறிக்கை
  1. குவியல் வகை என்றால் என்ன?
  2. மேக்ஸ் ஹீப்
  3. குறைந்தபட்ச குவியல்
  4. ஜாவாவில் குவியல் செயல்படுத்தல்
    • வரைபடம்
    • குறியீடு

ஆரம்பித்துவிடுவோம்!

குவியல் வகை என்றால் என்ன?

குவியல் அடிப்படையில் ஒரு மரம் சார்ந்த தரவு அமைப்பு. இது முனைகளைக் கொண்டுள்ளது. முனை சில கூறுகளைக் கொண்டுள்ளது. ஒவ்வொரு முனையிலும் ஒரு உறுப்பு உள்ளது.



முனைகளில் குழந்தைகள் இருக்கலாம். குழந்தைகள் இல்லாவிட்டால், அது இலை என்று அழைக்கப்படுகிறது.

பின்பற்ற வேண்டிய இரண்டு விதிகள் உள்ளன:

  • ஒவ்வொரு முனையின் மதிப்பும் அதன் குழந்தைகளில் சேமிக்கப்பட்ட அனைத்து மதிப்புகளுக்கும் குறைவாகவோ அல்லது சமமாகவோ இருக்க வேண்டும்.
  • இது மிகக் குறைந்த உயரத்தைக் கொண்டுள்ளது.

குவியல்களைப் பிரித்தெடுப்பதில் மிகவும் திறமையானவைகுறைந்தது அல்லது மிகப்பெரிய உறுப்பு.



இப்போது நிமிட குவியலுக்கு செல்லலாம்!

குறைந்தபட்ச குவியல்

குறைந்தபட்ச குவியல் என்பது ஒரு முழுமையான பைனரி மரமாகும், இதில் ரூட் தனிமத்தின் மதிப்பு குழந்தை உறுப்புக்கு குறைவாகவோ அல்லது சமமாகவோ இருக்கும்.

நிமிடம் குவியலின் பிரதிநிதித்துவம்

அர் [(i-1) / 2]: இது பெற்றோர் முனையைத் தரும்.

அர் [(2 * i) + 1]: இது இடது குழந்தை முனையைத் தரும்.

அர் [(2 * i) + 2]: இது சரியான குழந்தை முனையைத் தரும்.

மின் குவியலின் சில முறைகள் உள்ளன:

  • செருகு (): மரத்தின் முடிவில் ஒரு புதிய விசை சேர்க்கப்பட்டுள்ளது. புதிய விசை பெரிதாக இருந்தால் பெற்றோர், பின்னர் எதுவும் செய்யத் தேவையில்லை, வேறு, குவியல் சொத்தை அமைப்பதற்கு நாம் பயணிக்க வேண்டும்.
  • getMin (): இந்த முறைகள் ரூட் உறுப்பை திரும்பப் பெற உதவுகின்றன.
  • extractMin (): இந்த முறை குறைந்தபட்சத்தை வழங்குகிறதுஉறுப்பு.

இப்போது மேக்ஸ் குவியலுக்கு நகரும்.

அதிகபட்ச குவியல்

மேக்ஸ் குவியல் என்பது ஒரு முழுமையான பைனரி மரமாகும், இதில் ரூட் தனிமத்தின் மதிப்பு குழந்தை உறுப்புக்கு அதிகமாகவோ அல்லது சமமாகவோ இருக்கும்.

விண்டோஸ் 10 இல் php ஐ நிறுவுகிறது

மேக்ஸ் குவியல் பல முறைகளைக் கொண்டுள்ளது!

  • செருகு (): அது குவியலில் ஒரு உறுப்பைச் செருகும்.
  • அழி() : இது குவியலிலிருந்து ஒரு உறுப்பை நீக்கும்.
  • FindMax (): இது குவியலிலிருந்து அதிகபட்ச உறுப்பைக் கண்டுபிடிக்கும்.
  • printHeap (): இது குவியலின் உள்ளடக்கத்தை அச்சிடும்

இப்போது ஒரு வரைபடம் மற்றும் பின்னர் ஜாவா மூலம் குவியல் செயல்படுத்தலைக் காண்பிக்கிறேன்குறியீடு.

ஜாவாவில் குவியல் செயல்படுத்தல்

வரைபடம்:

Heap

மேலே உள்ள வரைபடம் ஜாவாவில் பைனரி குவியலைக் காட்டுகிறது. இரண்டு குவியல்கள் உள்ளன என்பதை நீங்கள் அறிந்திருக்கிறீர்கள்: குறைந்தபட்ச குவியல் மற்றும் மேக்ஸ் குவியல், இங்கே ஒரு வரைபடம்:

ஜாவாவில் வழிமுறைகள் மற்றும் தரவு கட்டமைப்புகள்

இப்போது, ​​எங்கள் அடுத்த பகுதிக்குச் செல்லும்போது, ​​ஜாவாவில் பைனரி குவியலை எவ்வாறு செயல்படுத்துவது என்று பார்ப்போம்.

குறியீடு:

பொது வகுப்பு பைனரிஹீப் {தனியார் நிலையான இறுதி எண்ணாக d = 2 தனியார் எண்ணாக [] குவியல் தனியார் எண்ணாக குவியல் அளவு / ** * இது எங்கள் குவியலை இயல்புநிலை அளவுடன் துவக்கும். * / பொது பைனரிஹீப் (முழு திறன்) {குவியல் அளவு = 0 குவியல் = புதிய எண்ணாக [திறன் + 1] வரிசைகள். நிரப்பு (குவியல், -1)} / ** * குவியல் காலியாக இருக்கிறதா இல்லையா என்பதை இது சரிபார்க்கும் * சிக்கலானது: ஓ ( 1) * / பொது பூலியன் isEmpty () {return heapSize == 0} / ** * குவியல் நிரம்பியதா இல்லையா என்பதை இது சரிபார்க்கும் * சிக்கலானது: O (1) * / பொது பூலியன் isFull () {return heapSize == heap .நீளம்} private int பெற்றோர் (int i) {return (i-1) / d} private int kthChild (int i, int k) {return d * i + k} / ** * இது புதிய உறுப்பை குவியலுக்குள் செருகும் * சிக்கலானது: ஓ (பதிவு என்) * மிக மோசமான சூழ்நிலையில், நாம் வேர் வரை பயணிக்க வேண்டும் * / பொது வெற்றிட செருகல் (int x) {if (isFull ()) புதிய NoSuchElementException ஐ வீசினால் ('குவியல் நிரம்பியுள்ளது, செருக இடம் இல்லை புதிய உறுப்பு ') குவியல் [heapSize ++] = x heapifyUp (heapSize-1)} / ** * இது குறியீட்டு x இல் உள்ள உறுப்பை நீக்கும் * சிக்கலானது: O (log N) * * / public int delete (int x) {if (isEmpty ()) புதிய NoSuchElementException ஐ எறியுங்கள் ('குவியல் காலியாக உள்ளது, நீக்க உறுப்பு இல்லை') int key = heap [x] heap [x] = heap [heapSize -1] heapSize-- heapifyDown (x) retu rn key} / ** * ஒரு உறுப்பைச் செருகும்போது குவியல் சொத்தை பராமரிக்க இந்த முறை பயன்படுத்தப்படுகிறது. * * / private void heapifyUp (int i) {int temp = heap [i] while (i> 0 && temp> heap [parent (i)]) {heap [i] = heap [parent (i)] i = parent (i)} குவியல் [i] = தற்காலிக} / ** * ஒரு உறுப்பை நீக்கும்போது குவியல் சொத்தை பராமரிக்க இந்த முறை பயன்படுத்தப்படுகிறது. * * / private void heapifyDown (int i) {int child int temp = heap [i] while (kthChild (i, 1)குவியல் [rightChild]? leftChild: rightChild} / ** * இந்த முறை குவியலின் அனைத்து உறுப்புகளையும் அச்சிடப் பயன்படுகிறது * * / பொது வெற்றிட அச்சு அச்சு () {System.out.print ('nHeap =') (int i = 0 i

இதன் மூலம், ஜாவாவில் பைனரி ஹீப் குறித்த இந்த கட்டுரையின் முடிவுக்கு வருகிறோம். பாருங்கள் உலகெங்கிலும் பரவியுள்ள 250,000 க்கும் மேற்பட்ட திருப்தியான கற்றவர்களின் வலைப்பின்னலுடன் நம்பகமான ஆன்லைன் கற்றல் நிறுவனமான எடுரேகாவால். ஜுவா டெவலப்பராக விரும்பும் மாணவர்கள் மற்றும் நிபுணர்களுக்காக எடுரேகாவின் ஜாவா ஜே 2 இஇ மற்றும் எஸ்ஓஏ பயிற்சி மற்றும் சான்றிதழ் பாடநெறி வடிவமைக்கப்பட்டுள்ளது. ஜாவா புரோகிராமிங்கில் உங்களுக்கு ஒரு தொடக்கத்தைத் தருவதற்கும், ஹைபர்னேட் & ஸ்பிரிங் போன்ற பல்வேறு ஜாவா கட்டமைப்புகளுடன் கோர் மற்றும் மேம்பட்ட ஜாவா கருத்தாக்கங்களுக்கும் பயிற்சி அளிப்பதற்காக இந்த பாடநெறி வடிவமைக்கப்பட்டுள்ளது.

எங்களுக்கு ஒரு கேள்வி கிடைத்ததா? இந்த “ஜாவா அரேலிஸ்ட்” வலைப்பதிவின் கருத்துகள் பிரிவில் இதைக் குறிப்பிடவும், விரைவில் நாங்கள் உங்களைத் தொடர்புகொள்வோம்.