जावा में शीर्ष डेटा संरचनाएं और एल्गोरिदम जो आपको जानना आवश्यक है



जावा में डेटा स्ट्रक्चर्स और अल्गोरिथम पर यह ब्लॉग आपको जावा की सभी प्रमुख डेटा संरचनाओं और एल्गोरिदम को समझने में मदद करेगा।

अगर मुझे सॉफ़्टवेयर विकास में सबसे महत्वपूर्ण विषय चुनना था, तो यह डेटा संरचना और एल्गोरिदम होगा। आप इसे हर कंप्यूटर प्रोग्रामर के लिए उपलब्ध मूलभूत उपकरण के रूप में सोच सकते हैं। प्रोग्रामिंग करते समय, हम उपयोग करते हैं डेटा संरचनाएं डेटा संग्रहीत और व्यवस्थित करने के लिए, और एल्गोरिदम उन संरचनाओं में डेटा में हेरफेर करने के लिए। इस लेख में सभी सामान्य डेटा संरचनाओं और एल्गोरिदम की विस्तृत समीक्षा शामिल है पाठकों को अच्छी तरह से सुसज्जित होने की अनुमति देने के लिए।

नीचे सूचीबद्ध विषय इस लेख में चर्चा कर रहे हैं:





जावा में डेटा संरचनाएं

डेटा संरचना कंप्यूटर में डेटा को संग्रहीत और व्यवस्थित करने का एक तरीका है ताकि इसे कुशलता से उपयोग किया जा सके। यह कुशलता से बड़ी मात्रा में डेटा का प्रबंधन करने का साधन प्रदान करता है। और कुशल डेटा संरचनाएं कुशल एल्गोरिदम को डिजाइन करने के लिए महत्वपूर्ण हैं।

मेंयह 'डेटा संरचनाएं और एल्गोरिदम जावा के लेख में, हम बुनियादी डेटा संरचनाओं को कवर करने जा रहे हैं:



आइए उनमें से प्रत्येक को देखें।

जावा में रैखिक डेटा संरचनाएं

में रैखिक डेटा संरचनाएँ वे हैं जिनके तत्व अनुक्रमिक हैं और एक तरह से आदेशित हैं ताकि: केवल एक ही हो पहला तत्व और केवल एक है अगला तत्व , सिर्फ एक ही है अंतिम तत्व और केवल एक है पिछला तत्व , जबकि अन्य सभी तत्वों में ए अगला और एक पहले का तत्व।

ऐरे करता है

एक सरणी एक रेखीय डेटा संरचना हैसूचकांक द्वारा पहुँचा, समान तत्वों के समूह का प्रतिनिधित्व करना। डेटा संग्रहीत करने से पहले एक सरणी का आकार प्रदान किया जाना चाहिए। नीचे सूचीबद्ध सरणी के गुण हैं:



  • किसी सरणी में प्रत्येक तत्व समान डेटा प्रकार का होता है और उसका आकार समान होता है
  • सरणी के तत्व सबसे छोटे स्मृति स्थान पर शुरू होने वाले पहले तत्व के साथ सन्निहित स्मृति स्थानों पर संग्रहीत किए जाते हैं
  • सरणी के तत्वों को बेतरतीब ढंग से एक्सेस किया जा सकता है
  • सरणी डेटा संरचना पूरी तरह से गतिशील नहीं है

Arrays - Edureka

उदाहरण के लिए , हम उस गेम के लिए शीर्ष दस स्कोर का ट्रैक रखने के लिए एक वीडियो गेम चाहते हैं। बल्कि दस अलग-अलग का उपयोग करें चर इस कार्य के लिए, हम पूरे समूह के लिए एक ही नाम का उपयोग कर सकते हैं और उस समूह में उच्च अंकों का उल्लेख करने के लिए सूचकांक संख्याओं का उपयोग कर सकते हैं।

लिंक्ड सूची

सेवा मेरे कई नोड्स के संग्रह के साथ एक रैखिक डेटा संरचना है, जहां ईach तत्व अपने स्वयं के डेटा और एक पॉइंटर को अगले तत्व के स्थान पर संग्रहीत करता है। एक लिंक की गई सूची में अंतिम लिंक शून्य की ओर इशारा करता है, श्रृंखला के अंत का संकेत देता है। लिंक की गई सूची में एक तत्व को कहा जाता है नोड । पहले नोड को कहा जाता है सिरअंतिम नोड को कहा जाता है पूँछ

लिंक्ड सूची के प्रकार

एकल लिंक की गई सूची (यूनी-दिशात्मक)

संदेह से जुड़ी सूची (द्वि-दिशात्मक)

सर्कुलर लिंक्ड सूची

यहाँ एक सरल उदाहरण है: पेपर लिस्ट की एक श्रृंखला की तरह एक लिंक्ड सूची की कल्पना करें जो एक साथ जुड़ी हुई हैं। आप आसानी से ऊपर या नीचे एक और पेपरक्लिप जोड़ सकते हैं। बीच में एक डालने के लिए भी जल्दी है। आपको बस इतना करना है कि बीच पर चेन को डिस्कनेक्ट करना है, नया पेपरक्लिप जोड़ना है, फिर दूसरे हाफ को फिर से कनेक्ट करना है। एक लिंक की गई सूची समान है।

ढेर

ढेर, एक सार डेटा संरचना, का एक संग्रह है वस्तुएं के अनुसार डाला और हटाया जाता है अंतिम-इन-प्रथम (LIFO) सिद्धांत। ऑब्जेक्ट्स को किसी भी समय स्टैक में डाला जा सकता है, लेकिन किसी भी समय केवल सबसे हाल ही में डाली गई (यानी 'अंतिम') ऑब्जेक्ट को हटाया जा सकता है।नीचे सूचीबद्ध स्टैक के गुण हैं:

  • यह एक आदेश सूची है जिसमेंसम्मिलन और विलोपन केवल एक छोर पर किया जा सकता है जिसे कहा जाता है ऊपर
  • अपने शीर्ष तत्व के लिए एक सूचक के साथ पुनरावर्ती डेटा संरचना
  • का पालन करता है अंतिम-इन-प्रथम (LIFO) सिद्धांत
  • दो सबसे मौलिक तरीकों का समर्थन करता है
    • push (e): स्टैक के शीर्ष पर, तत्व e डालें
    • पॉप (): स्टैक पर शीर्ष तत्व को निकालें और वापस करें

किसी शब्द को उलटते समय ढेर के व्यावहारिक उदाहरणों में शामिल हैं,की शुद्धता की जांच करने के लिए कोष्ठकअनुक्रम,ब्राउज़रों में वापस कार्यक्षमता को लागू करना और बहुत कुछ।

कतार

एक अन्य प्रकार के अमूर्त डेटा संरचना भी हैं। एक स्टैक के विपरीत, कतार वस्तुओं का एक संग्रह है जिसे डाला जाता है और के अनुसार हटाया जाता है पहला-पहला-आउट (FIFO) सिद्धांत। यही है, तत्वों को किसी भी समय डाला जा सकता है, लेकिन केवल सबसे लंबे समय तक कतार में रहने वाले तत्व को किसी भी समय हटाया जा सकता है।नीचे सूचीबद्ध कतार के गुण हैं:

  • अक्सर के रूप में जाना जाता है पेहले आये पेहलॆ गये सूची
  • दो सबसे मौलिक तरीकों का समर्थन करता है
    • enqueue (e): तत्व e डालें, पर पीछे कतार का
    • dequeue (): तत्व को निकालें और से लौटें सामने कतार का

में कतारों का उपयोग किया जाता हैदो प्रक्रियाओं, सीपीयू शेड्यूलिंग, डिस्क निर्धारण और अन्य स्थितियों के बीच डेटा का अतुल्यकालिक स्थानांतरण जहां संसाधनों को कई उपयोगकर्ताओं के बीच साझा किया जाता है और पहले आओ पहले पाओ के आधार पर सेवा दी जाती है। इसके आगे up डेटा स्ट्रक्चर्स और अल्गोरिद्म इन जावा ’आर्टिकल है, हमारे पास पदानुक्रमित डेटा स्ट्रक्चर्स हैं।

जावा में पदानुक्रमित डेटा संरचनाएं

बाइनरी ट्री

बाइनरी ट्री एक हैपदानुक्रमित पेड़ डेटा संरचनाएं जिसमें प्रत्येक नोड में अधिकतम दो बच्चे हैं , जो के रूप में जाना जाता है बचा हुआ बच्चा और यह सही बच्चा है । प्रत्येक बाइनरी ट्री में नोड्स के निम्नलिखित समूह होते हैं:

  • रूट नोड: यह सबसे ऊपरी नोड है और अक्सर इसे मुख्य नोड कहा जाता हैक्योंकि अन्य सभी नोड्स को रूट से पहुँचा जा सकता है
  • लेफ्ट सब-ट्री, जो कि एक बाइनरी ट्री भी है
  • राइट सब-ट्री, जो एक बाइनरी ट्री भी है

नीचे सूचीबद्ध बाइनरी ट्री के गुण हैं:

  • एक बाइनरी ट्री को दो तरीकों से ट्रेस किया जा सकता है:
    • गहराई पहले ट्रैवर्सल : इन-ऑर्डर (लेफ्ट-रूट-राइट), प्रीऑर्डर (रूट-लेफ्ट-राइट) और पोस्टऑर्डर (लेफ्ट-राइट-रूट)
    • चौड़ाई पहला ट्रैवर्सल : स्तर आदेश Traversal
  • ट्री ट्रैवर्सल की समय जटिलता: O (n)
  • स्तर maximum l '= 2 पर नोड्स की अधिकतम संख्याएल -1

बाइनरी पेड़ों के अनुप्रयोगों में शामिल हैं:

  • कई खोज अनुप्रयोगों में उपयोग किया जाता है जहां डेटा लगातार दर्ज / छोड़ रहा है
  • दृश्य प्रभावों के लिए डिजिटल छवियों को संयोजित करने के लिए एक वर्कफ़्लो के रूप में
  • राउटर-टेबल के भंडारण के लिए लगभग हर उच्च-बैंडविड्थ राउटर में उपयोग किया जाता है
  • वायरलेस नेटवर्किंग और मेमोरी आवंटन में भी उपयोग किया जाता है
  • संपीड़न एल्गोरिदम और कई और अधिक में उपयोग किया जाता है

बाइनरी हीप

बाइनरी हीप एक पूर्ण हैबाइनरी ट्री, जो ढेर संपत्ति का जवाब देता है। सरल शब्दों मेंनिम्नलिखित गुणों के साथ एक द्विआधारी पेड़ की भिन्नता है:

  • हीप एक पूर्ण बाइनरी ट्री है: एक पेड़ को पूर्ण कहा जाता है यदि उसके सभी स्तर, संभवतः सबसे गहरे को छोड़कर, पूर्ण होते हैं। टीबाइनरी हीप की उनकी संपत्ति इसे एक में संग्रहीत करने के लिए उपयुक्त बनाती है ।
  • ढेर संपत्ति का पालन करता है: एक बाइनरी हीप या तो एक है मिन-हीप या ए मैक्स-हीप
    • मिन बाइनरी हीप: एफया ढेर में प्रत्येक नोड, नोड का मान है से कम या उसके बराबर बच्चों के मूल्य
    • मैक्स बाइनरी हीप: एफया ढेर में प्रत्येक नोड, नोड का मान है इससे बड़ा या इसके बराबर बच्चों के मूल्य

बाइनरी हीप के लोकप्रिय अनुप्रयोगों में शामिल हैंकुशल प्राथमिकता-कतारों को लागू करना, कुशलता से कश्मीर को सबसे छोटे (या सबसे बड़े) तत्वों को एक सरणी में ढूंढना और बहुत कुछ।

हैश टेबल

कल्पना कीजिए कि आपके पास ए वस्तु और आप इसे खोजना आसान बनाने के लिए एक कुंजी असाइन करना चाहते हैं। उस कुंजी / मूल्य जोड़ी को संग्रहीत करने के लिए, आप डेटा संरचना की तरह एक सरल सरणी का उपयोग कर सकते हैं जहां कुंजियाँ (पूर्णांक) सीधे डेटा मानों को संग्रहीत करने के लिए एक सूचकांक के रूप में उपयोग किया जा सकता है। हालाँकि, ऐसे मामलों में जहाँ कुंजियाँ बहुत बड़ी हैं और उन्हें सीधे सूचकांक के रूप में उपयोग नहीं किया जा सकता है, हैशिंग नामक तकनीक का उपयोग किया जाता है।

हैशिंग में, बड़ी कुंजियों का उपयोग करके छोटी-छोटी कुंजियों में परिवर्तित किया जाता है हैश फ़ंक्शन । मानों को तब नामक एक डेटा संरचना में संग्रहीत किया जाता हैसेवा मेरे हैश तालिका। एक हैश तालिका एक डेटा संरचना है जो एक शब्दकोश ADT को लागू करती है, एक संरचना जो मूल्यों के लिए अद्वितीय कुंजी को मैप कर सकती है।

सामान्य तौर पर, हैश तालिका में दो प्रमुख घटक होते हैं:

  1. बाल्टी सरणी: हैश टेबल के लिए एक बकेट ऐरे आकार N की एक ए है, जहां ए के प्रत्येक सेल को 'बकेट' के रूप में माना जाता है, अर्थात, कुंजी-मूल्य जोड़े का एक संग्रह। पूर्णांक N, सरणी की क्षमता को परिभाषित करता है।
  2. हैश फंकशन: यह कोई भी फ़ंक्शन है जो हमारे नक्शे में प्रत्येक कुंजी k को एक पूर्णांक में सीमा [0, N & minus 1] में मैप करता है, जहां N इस तालिका के लिए बकेट ऐरे की क्षमता है।

जब हम वस्तुओं को हैशटेबल में रखते हैं, तो संभव है कि विभिन्न वस्तुओं में एक ही हैशकोड हो। इसे ए कहते हैं टक्कर । टक्कर से निपटने के लिए, पीछा करने और खुले पते जैसी तकनीकें हैं।

तो, ये जावा में कुछ बुनियादी और सबसे अधिक उपयोग की जाने वाली डेटा संरचनाएं हैं। अब जब आप इनमें से प्रत्येक के बारे में जानते हैं, तो आप उन्हें अपने में लागू करना शुरू कर सकते हैं । इसके साथ, हमने 'इस ures डेटा संरचना और एल्गोरिदम के जावा' लेख के पहले भाग को पूरा कर लिया है। अगले भाग में हम जानने वाले हैंबुनियादी एल्गोरिदम और उन्हें व्यावहारिक अनुप्रयोगों में कैसे उपयोग करना है जैसे सॉर्ट करना और खोजना, विभाजित करना और जीतना, लालची एल्गोरिदम, गतिशील प्रोग्रामिंग।

जावा में एल्गोरिदम

ऐतिहासिक रूप से जटिल गणितीय संगणनाओं को हल करने के लिए एक उपकरण के रूप में उपयोग किया जाता है, एल्गोरिदम कंप्यूटर विज्ञान के साथ और विशेष रूप से डेटा संरचनाओं के साथ गहराई से जुड़ा हुआ है। एक एल्गोरिथ्म है निर्देशों का एक क्रम जो समय की एक निश्चित अवधि में एक विशेष समस्या को हल करने के तरीके का वर्णन करता है। उन्हें दो तरीकों से दर्शाया जाता है:

  • फ्लोचार्ट - यह है एकएल्गोरिथ्म के नियंत्रण प्रवाह का दृश्य प्रतिनिधित्व
  • स्यूडोकोड - यहएल्गोरिथ्म का एक पाठीय प्रतिनिधित्व है जो अंतिम स्रोत कोड का अनुमान लगाता है

ध्यान दें: एल्गोरिथ्म का प्रदर्शन समय जटिलता और अंतरिक्ष जटिलता के आधार पर मापा जाता है। अधिकतर, किसी भी एल्गोरिथ्म की जटिलता समस्या पर और एल्गोरिथम पर ही निर्भर है।

आइए जावा में एल्गोरिदम की दो प्रमुख श्रेणियों का पता लगाएं, जो हैं:

जावा में एल्गोरिदम को क्रमबद्ध करना

सॉर्टिंग एल्गोरिदम एल्गोरिदम हैं जो एक सूची के तत्वों को एक निश्चित क्रम में डालते हैं। सबसे अधिक उपयोग किए जाने वाले आदेश संख्यात्मक क्रम और लेक्सिकोग्राफिक आदेश हैं। इस lets डेटा संरचना और एल्गोरिदम के लेख में कुछ छंटाई एल्गोरिदम का पता लगाने की सुविधा मिलती है।

जावा में बबल सॉर्ट

बबल सॉर्ट, जिसे अक्सर सिंकिंग सॉर्ट कहा जाता है, सबसे सरल सॉर्टिंग एल्गोरिदम है। यह बार-बार सूची के माध्यम से क्रमबद्ध होता है, आसन्न तत्वों के प्रत्येक जोड़े की तुलना करता है और गलत क्रम में होने पर उन्हें स्वैप कर देता है।बबल सॉर्ट को इसका नाम मिलता है क्योंकि यह तत्वों को सरणी के शीर्ष पर फिल्टर करता है, जैसे कि बुलबुले पानी पर तैरते हैं।

यहाँ हैpseudocode Bubble Sort Algorithm (आरोही क्रम संदर्भ) का प्रतिनिधित्व करता है।

[a] आकार की एक सरणी है N शुरू करें BubbleSort (a []) घोषित पूर्णांक i, j के लिए i = 0 से N - 1 के लिए j = 0 से N - i - 1 यदि [a] [j]> a [j + 1 ] फिर एक स्वैप करें [j], एक [j + 1] अंत अगर वापसी के लिए अंत एक BubbleBort

यह कोड एन डेटा आइटम्स के एक-आयामी सरणी को आरोही क्रम में ऑर्डर करता है। एक बाहरी लूप सरणी पर एन -1 पास बनाता है। प्रत्येक पास डेटा आइटम का आदान-प्रदान करने के लिए एक आंतरिक लूप का उपयोग करता है जैसे कि सरणी की शुरुआत की ओर सबसे छोटा डेटा आइटम 'बुलबुले'। लेकिन समस्या यह है कि सूची को क्रमबद्ध करने के लिए एल्गोरिदम को बिना किसी स्वैप के एक पूरे पास की आवश्यकता है।

सबसे खराब और औसत केस टाइम जटिलता: ओ (एन * एन)। सबसे खराब स्थिति तब होती है जब एक सरणी रिवर्स सॉर्ट की जाती है।

सबसे अच्छा मामला समय जटिलता: पर)। सबसे अच्छा मामला तब होता है जब एक सरणी पहले से ही सॉर्ट की जाती है।

जावा में चयन सॉर्ट

चयन छँटाई खोज और छँटाई दोनों का एक संयोजन है। एल्गोरिथ्म एक सरणी को बार-बार अनधिकृत भाग से न्यूनतम तत्व (आरोही क्रम पर विचार करके) और सरणी में एक उचित स्थिति में रखकर सॉर्ट करता है।

यहाँ चयन छंटनी एल्गोरिदम (आरोही क्रम संदर्भ) का प्रतिनिधित्व करने वाला छद्मकोड है।

[a] आकार की एक सरणी है N प्रारंभ SelectionSort (a []) के लिए i = 0 से n - 1 / * वर्तमान तत्व को न्यूनतम * / मिनट = i / * के रूप में न्यूनतम तत्व * / j = i + 1 के लिए निर्धारित करें। n से अगर सूची [जे]

जैसा कि आप कोड से समझ सकते हैं, सरणी से गुजरने वाली संख्या की संख्या सरणी में वस्तुओं की संख्या से कम है। आंतरिक लूप अगले सबसे छोटे मान को और बाहरी लूप को उस मान को अपने उचित स्थान पर पाता है। चयन प्रकार कभी भी O (n) स्वैप से अधिक नहीं होता है और यह तब उपयोगी हो सकता है जब मेमोरी राइट महंगा ऑपरेशन हो।

समय जटिलता: पर) के रूप में दो नेस्टेड छोरों हैं।

सहायक स्थान: या (१)।

सम्मिलन जावा में क्रमबद्ध करें

प्रविष्टि सॉर्ट एक सरल सॉर्टिंग एल्गोरिथ्म है जो एक बार में एक इनपुट तत्व का उपभोग करके सूची के माध्यम से पुनरावृत्ति करता है और अंतिम क्रमबद्ध सरणी बनाता है। यह छोटे डेटा सेट पर बहुत सरल और अधिक प्रभावी है। यह स्थिर और इन-प्लेस सॉर्टिंग तकनीक है।

यहाँ सम्मिलन सॉर्ट एल्गोरिथम (आरोही क्रम संदर्भ) का प्रतिनिधित्व करने वाला छद्मकोड है।

[a] आकार की एक सरणी है N प्रारंभ सम्मिलनसूत्र ([[] के लिए i = १ से N कुंजी = a [i] j = i - १ जबकि (j> = ०] और [j]> की ० [जे +] 1] = x [j] j = j - 1 अंत जबकि एक [j + 1] = अंत सम्मिलन के लिए कुंजी अंत

जैसा कि आप कोड से समझ सकते हैं, प्रविष्टि सॉर्ट एल्गोरिथ्मइनपुट डेटा से एक तत्व को निकालता है, यह उस स्थान को खोजता है जो इसे सॉर्ट की गई सूची के भीतर है और इसे वहां सम्मिलित करता है। यह तब तक दोहराता है जब तक कोई इनपुट तत्व अनसोल्ड नहीं रहते।

सबसे अच्छा मामला: सबसे अच्छा मामला है जब इनपुट एक सरणी है जो पहले से ही सॉर्ट किया गया है। इस स्थिति में सम्मिलन प्रकार में एक रेखीय रनिंग टाइम होता है (यानी, और थीटा (n))।

सबसे खराब मामला: सबसे सरलतम केस इनपुट रिवर्स ऑर्डर में क्रमबद्ध एक सरणी है।

क्विकसॉर्ट इन जावा

Quicksort एल्गोरिथ्म एक तेज, पुनरावर्ती, गैर-स्थिर सॉर्ट एल्गोरिथ्म है जो विभाजन और सिद्धांत को जीतता है। यह धुरी के रूप में एक तत्व को चुनता है और दिए गए सरणी को उस धुरी के चारों ओर विभाजित करता है।

त्वरित प्रकार को लागू करने के लिए कदम:

  1. एक उपयुक्त 'धुरी बिंदु' चुनें।
  2. सूचियों को दो सूचियों में विभाजित करेंइस धुरी तत्व के आधार पर। प्रत्येक तत्व जो धुरी तत्व से छोटा होता है उसे बाईं सूची में रखा जाता है और प्रत्येक तत्व जो बड़ा होता है उसे सही सूची में रखा जाता है। यदि कोई तत्व धुरी तत्व के बराबर है तो वह किसी भी सूची में जा सकता है। इसे विभाजन ऑपरेशन कहा जाता है।
  3. प्रत्येक छोटी सूची को पुन: क्रमबद्ध करें।

यहाँ क्विकॉर्ट एल्गोरिथम का प्रतिनिधित्व करने वाला छद्मकोड है।

क्विकॉर्ट (ए ऐज़ एरे, लो इंट इंट, हाई इंट इंट) {अगर (लो)

उपरोक्त छद्मकोश में, विभाजन () फ़ंक्शन विभाजन ऑपरेशन करता है और जल्दी से सुलझाएं() फ़ंक्शन बार-बार उत्पन्न होने वाली प्रत्येक छोटी सूची के लिए विभाजन फ़ंक्शन को कॉल करता है। औसत मामले में क्विकॉर्ट की जटिलता & थीटा (एन लॉग (एन)) है और सबसे खराब स्थिति में थीटा (एन 2) है।

जावा में मर्ज सॉर्ट करें

मर्जेसर्ट एक तेज, पुनरावर्ती, स्थिर सॉर्ट एल्गोरिथ्म है जो विभाजन और सिद्धांत को जीतकर भी काम करता है। क्विकर के समान, मर्ज सॉर्ट तत्वों की सूची को दो सूचियों में विभाजित करता है। इन सूचियों को स्वतंत्र रूप से क्रमबद्ध किया जाता है और फिर संयोजित किया जाता है। सूचियों के संयोजन के दौरान, तत्वों को सूची में सही स्थान पर डाला (या विलय) किया जाता है।

यहाँ मर्ज सॉर्ट एल्गोरिथम का प्रतिनिधित्व करने वाला छद्मकोड है।

प्रक्रिया MergeSort (एक सरणी के रूप में) अगर (n == 1) एक var l1 को array = a [0] ... a [n / 2] var l2 को array = a [n / 2 + 1] के रूप में लौटाती है ... a [n] l1 = मर्जोर्ट (l1) l2 = मर्जर्ट (l2) रिटर्न मर्ज (l1, l2) एंड प्रोसेस प्रक्रिया मर्ज (एक एरे, बी ऐज एरे) वेरिएंट सी ऐज ऐज (ए और बी एलिमेंट्स) अगर ( a [0]> b [0]) c b के अंत में b [0] को जोड़ [b] [0] से b [a] जोड़कर c [a] को अंत से थोड़ी देर में समाप्त होने पर [0] को हटा दें। (एक तत्व है) ग के अंत में एक [0] को जोड़ने के लिए [०] एक छोर से अंत में (जबकि तत्वों में है) बी [०] सी को हटाने के अंत में बी [०] से बी अंत में [०] जोड़ें। c अंत प्रक्रिया

मर्ज़ सॉर्ट() फ़ंक्शन सूची को दो में विभाजित करता है, कॉल करता है मर्ज़ सॉर्ट() इन सूचियों पर अलग से और फिर उन्हें विलय () फ़ंक्शन के मापदंडों के रूप में भेजकर संयोजित करता है।एल्गोरिथ्म में ओ (एन लॉग (एन)) की एक जटिलता है और आवेदनों की एक विस्तृत श्रृंखला है।

जावा में हीप सॉर्ट

हीप्सर्ट एक तुलना-आधारित छँटाई एल्गोरिथ्म हैबाइनरी हीप डेटा संरचना। आप इसे बेहतर संस्करण f चयन प्रकार के रूप में सोच सकते हैं, जहांयह अपने इनपुट को एक सॉर्ट किए गए और अनसोल्ड क्षेत्र में विभाजित करता है, और यह चलने वाले क्षेत्र को सबसे बड़े तत्व को निकालकर सॉर्ट किए गए क्षेत्र में ले जाता है।

क्विकॉर्ट को लागू करने के कदम (बढ़ते क्रम में):

  1. छँटाई सरणी के साथ एक अधिकतम ढेर बनाएँ
  2. इस संकेत परटी, सबसे बड़ा आइटम ढेर की जड़ में संग्रहीत किया जाता है। इसे ढेर के अंतिम आइटम के साथ बदलें और 1 से ढेर के आकार को कम करें। अंत में, पेड़ की जड़ को ढेर करें
  3. ऊपर के चरणों को दोहराएं जब तक कि ढेर का आकार 1 से अधिक न हो

यहाँ छद्म कोड हीप अलगोरिदम का प्रतिनिधित्व करता है।

(I (n = 2 - 1) i से => = 0 के लिए i (n, i) के लिए i = n-1 से 0 स्वैप (a [0], [i]) के लिए हीप्सोर्ट (एक ऐस एरे) (a, i, 0) अंत के लिए अंत में heapify के लिए (as a array, n int, i as int) सबसे बड़ा = i // रूट इंट्रस्ट के रूप में सबसे बड़ा int int l eft = 2 * i + 1 // left = 2 * i + 1 इंट राइट = 2 * i + 2 // राइट = 2 * i + 2 अगर (एक [सबसे बड़ा]) छोड़ दिया जाए तो सबसे बड़ा = बाएं अगर (दाएं [सबसे बड़ा]) सबसे बड़ा = सही अगर (सबसे बड़ा! = I) स्वैप (! एक [i], A [सबसे बड़ा]) Heapify (ए, एन, सबसे बड़ा) अंत ढेर

इनके अलावा, अन्य सॉर्टिंग एल्गोरिदम हैं जो कि अच्छी तरह से ज्ञात नहीं हैं, जैसे कि, इंट्रोसॉर्ट, काउंटिंग सॉर्ट, आदि इस ures डेटा स्ट्रक्चर्स और अल्गोरिद्म के लेख में एल्गोरिदम के अगले सेट पर आगे बढ़ते हैं, आइए खोज खोज वाले स्थानों को देखें

जावा में एल्गोरिदम की खोज

खोज नियमित व्यापार अनुप्रयोगों में सबसे आम और अक्सर निष्पादित कार्यों में से एक है। खोज एल्गोरिदम एक आइटम के संग्रह के बीच निर्दिष्ट गुणों के साथ एक आइटम खोजने के लिए एल्गोरिदम हैं। आइए सबसे अधिक उपयोग किए जाने वाले खोज एल्गोरिदम में से दो का अन्वेषण करें।

रैखिक खोज एल्गोरिथ्म जावा में

रैखिक खोज या अनुक्रमिक खोज सबसे सरल खोज एल्गोरिदम है। इसमें दिए गए डेटा संरचना में एक तत्व के लिए अनुक्रमिक खोज शामिल है जब तक कि तत्व नहीं मिलता है या संरचना के अंत तक नहीं पहुंचा जाता है। यदि तत्व पाया जाता है, तो आइटम का स्थान वापस आ जाता है अन्यथा एल्गोरिथ्म NULL देता है।

यहाँ जावा में रैखिक खोज का प्रतिनिधित्व करने वाला छद्मकोड है:

प्रक्रिया linear_search (एक [], मान) i = 0 से n-1 के लिए यदि [i] = मान तो प्रिंट 'पाया' अंत को प्रिंट करें यदि प्रिंट 'नहीं मिला' अंत रैखिक के लिए खोज।

यह है एकजानवर बल एल्गोरिथ्म।हालांकि यह निश्चित रूप से सबसे सरल है, यह इसकी अक्षमता के कारण सबसे निश्चित रूप से सबसे आम नहीं है। रैखिक खोज की समय जटिलता है पर)

जावा में बाइनरी सर्च एल्गोरिथम

द्विआधारी खोज, जिसे लॉगरिदमिक खोज के रूप में भी जाना जाता है, एक खोज एल्गोरिथ्म है जो पहले से ही सॉर्ट किए गए सरणी के भीतर एक लक्ष्य मान की स्थिति पाता है। यह इनपुट संग्रह को समान हिस्सों में विभाजित करता है और आइटम की सूची के मध्य तत्व के साथ तुलना की जाती है। अगर तत्व मिल जाए, तो खोज वहीं समाप्त हो जाती है। और, हम लक्ष्य के मध्य तत्व से छोटे या बड़े होने के आधार पर, सरणी के उपयुक्त विभाजन को विभाजित करके और चयन करके तत्व की तलाश जारी रखते हैं।

यहाँ जावा में बाइनरी खोज का प्रतिनिधित्व करने वाला छद्मकोड है:

दिनांक डेटा प्रकार sql सर्वर
प्रक्रिया बाइनरी_ एक सॉर्ट की गई सरणी n आकार x x मान को खोजे जाने के लिए निचली पट्टी = 1 अपरबाउंड = एन, जबकि एक्स नहीं मिला तो अपरबाउंड

खोज तब समाप्त होती है जब अपरबाउंड (हमारा पॉइंटर) पिछले निचले हिस्से (अंतिम तत्व) पर जाता है, जिसका अर्थ है कि हमने पूरे सरणी को खोज लिया है और तत्व मौजूद नहीं है।मुख्य रूप से त्वरित खोज समय के कारण यह सबसे अधिक उपयोग किया जाने वाला खोज एल्गोरिदम है। बाइनरी खोज की समय जटिलता है पर) जिस पर एक उल्लेखनीय सुधार है पर) रैखिक खोज की समय जटिलता।

यह हमें इस 'डेटा संरचना और जावा में अल्गोरिद्म' के लेख के अंत में लाता है। मैंने जावा के सबसे मौलिक और महत्वपूर्ण विषयों में से एक को कवर किया है।आशा है कि आप इस लेख में आपके साथ साझा की गई सभी बातों से स्पष्ट हैं।

सुनिश्चित करें कि आप जितना संभव हो उतना अभ्यास करें और अपने अनुभव को वापस लाएं।

इसकी जाँच पड़ताल करो 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। हम यहां आपकी यात्रा में हर कदम पर आपकी मदद करने के लिए हैं, इस साक्षात्कार साक्षात्कार के अलावा बनने के लिए, हम एक पाठ्यक्रम के साथ आते हैं, जो छात्रों और पेशेवरों के लिए बनाया गया है, जो जावा डेवलपर बनना चाहते हैं।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया इसे 'जावा में डेटा संरचना और एल्गोरिदम' के टिप्पणी अनुभाग में उल्लेख करें लेख और हम जितनी जल्दी हो सके आप को वापस मिल जाएगा।