विभिन्न डेटा संरचनाओं के व्यावहारिक उपयोग [बंद]


102

डेटा संरचनाओं के बारे में बहुत कुछ है, लेकिन मुझे डेटा संरचनाओं की एक सरल सूची और उनके व्यावहारिक उपयोग का पता नहीं चल सकता है। मैं एक साक्षात्कार के लिए अध्ययन करने की कोशिश कर रहा हूं और मुझे लगता है कि इससे मुझे कई अन्य लोगों के साथ मदद मिलेगी। मैं कुछ इस तरह की तलाश में हूँ:

डेटा संरचना - उदाहरण के लिए / प्रयुक्त

हैश टेबल - फास्ट डेटा लुकअप ... फिर एक उदाहरण दें

सरणी - ...

बाइनरी ट्री - ...

अगर इस तरह का कोई संसाधन है तो कृपया मुझे बताएं।

धन्यवाद!

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

जवाबों:


96

इसी तरह के प्रश्न में सूची मिली, पहले StackOverflow पर:

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

ट्राइ - डिक्शनरी, जैसे कि एक मोबाइल टेलीफोन पर स्वत: पूर्णता और वर्तनी-जांच के लिए मिला।

प्रत्यय वृक्ष - अधिकांश वर्ड प्रोसेसर में प्रयुक्त तेज पूर्ण पाठ खोजों।

स्टैक - वर्ड प्रोसेसर में पूर्ववत करें, एक्सप्रेशन मूल्यांकन और सिंटैक्स पार्सिंग, जेवीएम जैसी कई वर्चुअल मशीनें स्टैक ओरिएंटेड हैं।

कतार - परिवहन और संचालन अनुसंधान जहां विभिन्न संस्थाओं को संग्रहीत किया जाता है और बाद में संसाधित किया जाता है अर्थात कतार बफर के कार्य को करती है।

प्राथमिकता कतार - कर्नेल में प्रक्रिया निर्धारण

पेड़ - पार्सर्स, फाइलसिस्टम

मूलांक का पेड़ - आईपी रूटिंग टेबल

बीएसपी ट्री - 3 डी कंप्यूटर ग्राफिक्स

रेखांकन - सामाजिक नेटवर्किंग साइटों में कनेक्शन / संबंध, रूटिंग, संचार के नेटवर्क, डेटा संगठन आदि।

ढेर - लिस्प में गतिशील मेमोरी आवंटन

यह उत्तर मूल रूप से आरवी प्रदीप द्वारा पोस्ट किया गया है

कुछ अन्य, कम उपयोगी लिंक:

एप्लिकेशन केवल कुछ डेटा संरचनाओं के लिए सूचीबद्ध हैं

अच्छा सारांश और प्रासंगिक द्वारा ध्यान केंद्रित नहीं किया गया आवेदन


1
आपका पहला लिंक टूट गया है
Dan Beaulieu

धन्यवाद, @DanBeaulieu। मैंने मृत लिंक हटा दिया।
MXMLLN

1
बहुत अच्छा सारांश। संभवतः usages की सूची कभी समाप्त नहीं होती है, लेकिन किसी को बिंदु मिल जाता है।
निक एल।

1
क्या पूर्ववत / फिर से वास्तव में एक स्टैक होगा? यदि पूर्ववत स्टैक के शीर्ष पर पॉपअप किया गया है, तो आप फिर से नहीं कर पाएंगे।
टोनी एल।

5
@TonyL। मुझे पता है कि यह एक पुराना सवाल है, लेकिन मेरा मानना ​​है कि 2 स्टैक का उपयोग किया जाता है या पूर्ववत करें / फिर से करें। जब आप किसी क्रिया को पूर्ववत करते हैं तो यह एक्शन स्टैक से अलग हो जाता है और Redo Stack पर रखा जाता है। यदि आप फिर से करते हैं, तो आप इसे Redo Stack से पॉप करते हैं और इसे कार्रवाई स्टैक पर धक्का देते हैं। मेरी शब्दावली गलत हो सकती है, लेकिन वहाँ उदाहरण होने चाहिए।
रिक हेंडरसन

14

मैं उसी नाव में हूं जो आप करते हैं। मुझे तकनीकी साक्षात्कार के लिए अध्ययन करने की आवश्यकता है, लेकिन किसी सूची को याद रखना वास्तव में उपयोगी नहीं है। यदि आपके पास छूटने के लिए 3-4 घंटे हैं, और एक गहरा गोता लगाने के लिए, मैं बाहर की जाँच करने की सलाह देता हूं

mycodeschool
मैंने Coursera और अन्य संसाधनों जैसे ब्लॉग और पाठ्यपुस्तकों पर देखा है, लेकिन मुझे लगता है कि वे या तो व्यापक रूप से व्यापक नहीं हैं या स्पेक्ट्रम के दूसरे छोर पर, पूर्वापेक्षा कंप्यूटर विज्ञान की शब्दावली के साथ बहुत घना है।

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

  • सामान्य डेटा संरचनाओं के पक्ष और विपक्ष
  • प्रत्येक डेटा संरचना क्यों मौजूद है
  • यह वास्तव में मेमोरी में कैसे काम करता है
  • विशिष्ट प्रश्न / अभ्यास और निर्णय लेना कि अधिकतम दक्षता के लिए किस संरचना का उपयोग करना है
  • स्पष्ट बड़ा 0 स्पष्टीकरण

अगर आप रुचि रखते हैं तो मैंने भी जीथब पर नोट्स पोस्ट किए।


7

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

अब, इन डेटा प्रकारों को आदिम, सार, मिश्रित में विभाजित किया जा सकता है, जिस तरह से वे तार्किक रूप से निर्मित और एक्सेस किए जाते हैं, उसके आधार पर।

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

मुझे उम्मीद है कि यह आपको गोता लगाने में मदद करेगा।


6

स्काईना द्वारा उत्कृष्ट पुस्तक " एलगोरिदम डिजाइन मैनुअल" में एल्गोरिदम और डेटा संरचना का एक विशाल भंडार है।

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

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

एक और महान संसाधन डेटा संरचनाओं और एल्गोरिदम का NIST शब्दकोश है


4

डेटा संरचनाओं के कुछ अधिक व्यावहारिक अनुप्रयोग

लाल-काले पेड़ (जब लगातार आवेषण / विलोपन और कुछ खोजों का उपयोग किया जाता है) - K-mean क्लस्टरिंग लाल काले पेड़, डेटाबेस, सरल-दिमाग डेटाबेस का उपयोग करते हुए, शब्दकोशों के अंदर शब्दों को खोजते हुए, वेब पर खोज करते हुए

एवीएल पेड़ (अधिक खोज और प्रविष्टि / विलोपन के कम) - डेटा विश्लेषण और डेटा खनन और अनुप्रयोग जिसमें अधिक खोजें शामिल हैं

मिन हीप - क्लस्टरिंग एल्गोरिदम


3

विभिन्न डेटा संरचनाओं की कोई रैंकिंग समस्या के संदर्भ में कम से कम आंशिक रूप से बंधी होगी। यह सीखने में मदद करेगा कि एल्गोरिदम के समय और स्थान के प्रदर्शन का विश्लेषण कैसे किया जाए। आमतौर पर, "बिग ओ नोटेशन" का उपयोग किया जाता है, उदाहरण के लिए, द्विआधारी खोज ओ (लॉग एन) समय में है, जिसका अर्थ है कि किसी तत्व की खोज करने का समय तत्वों की संख्या का लॉग (बेस 2, अंतर्निहित) है। वास्तव में, चूंकि प्रत्येक चरण शेष डेटा के आधे को अप्रासंगिक के रूप में बताता है, तत्वों की संख्या दोगुनी होने से समय 1 चरण बढ़ जाएगा। (बाइनरी सर्च स्केल अच्छी तरह से।) अंतरिक्ष प्रदर्शन चिंता करता है कि बड़े डेटा सेट के लिए मेमोरी की मात्रा कैसे बढ़ती है। यह भी ध्यान दें कि बिग-ओ नोटेशन निरंतर कारकों को नजरअंदाज करता है - छोटे डेटा सेट के लिए, एक ओ (एन ^ 2) एल्गोरिथ्म अभी भी ओ (एन * लॉग एन) एल्गोरिदम की तुलना में तेज हो सकता है जिसमें एक उच्च निरंतर कारक होता है।

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

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.