एक डेवलपर को कौन से एल्गोरिदम और डेटा संरचनाएं बिल्कुल जानना चाहिए? [बन्द है]


24

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

एक सफल जावा डेवलपर होने के लिए, क्या मुझे सभी उन्नत एल्गोरिदम जैसे सीएलआरएस में दिए गए जानने की आवश्यकता है ?

क्या आप उन विषयों की सूची का सुझाव दे सकते हैं जिन्हें मुझे उनकी प्राथमिकता के अवरोही क्रम में सीखना चाहिए?

मुझे पता होना चाहिए:

  • खोज कर?
  • छंटाई?
  • रेखांकन / पेड़?

आदि?


1
@jonsca: संबद्ध विपणन आह? ;)
चन्नी पाठक

नहीं, ठीक है, एसई लिंक को इस तरह बदलता है, लेकिन मुझे लगा कि हर कोई उन
आदतों

जवाबों:


17

कॉर्मेन का परिचय एल्गोरिथम कुछ बुनियादी सैद्धांतिक नींवों के लिए एक अच्छी किताब है।

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


3
आपको एल्गोरिदम में शामिल लागतों को जानने की आवश्यकता है, हालांकि: उदाहरण के लिए, बहुत सारे स्थान का उपयोग करते समय चौड़ाई-पहली खोज सबसे छोटा रास्ता खोजेगी।
फ्रैंक शीयर

सहमत, हालांकि सिर्फ बड़े ओ नोटेशन की भावना प्राप्त करना एक लंबा रास्ता तय करता है।
जूनस पुलकका

8

यदि आपको किसी भी प्रकार का प्रोग्रामर बनना है, तो आपको सभी बुनियादी डेटा संरचनाओं (ढेर, कतार, सरणियाँ, लिंक की गई सूचियाँ, हैशटेबल्स, पेड़ आदि) को कुछ विस्तार से समझना होगा। कम से कम यह कि आप उनमें से किसी को भी अपने लिए लागू कर सकते हैं यदि आप अपने आप को एक ऐसी दुनिया में पाते हैं जिसके पास आपके लिए काम करने के लिए कोई संग्रह फ्रेमवर्क नहीं है।

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


0

अन्य उत्तरों के अलावा, मैं केवल यह जोड़ना चाहूंगा कि एल्गोरिदम का अध्ययन केवल अच्छी तरह से ज्ञात तकनीकों (जो अभी भी महत्वपूर्ण है) के बारे में जानने के लिए नहीं है, बल्कि विचारशील प्रक्रिया में समझने में सक्षम होने के लिए भी है एक समस्या का हल आप वास्तविक जीवन में चलाएं, जरूरी नहीं कि अच्छी तरह से जाना जाता है।


0

मैं अब एक दिन जावा सीख रहा हूं।

मैं एक सफल एंटरप्राइज डेवलपर बनना चाहता हूं। फिर मुझे किस एल्गोरिदम और डेटा संरचनाओं के साथ अच्छी तरह से वाकिफ होना चाहिए? आप मुझे कौन सी किताबें सुझाएंगे?

एक सफल जावा डेवलपर होने के लिए, क्या मुझे सभी उन्नत एल्गोरिदम जैसे सीएलआरएस में दिए गए जानने की आवश्यकता है?

क्या आप मुझे उन विषयों की सूची सुझा सकते हैं जो मुझे उनकी प्राथमिकता के अवरोही क्रम में सीखनी चाहिए?

मुझे कुछ विषयों के नाम बताइए जो मुझे अवश्य जानना चाहिए। जैसे सर्चिंग, सॉर्टिंग, ग्राफ्स, ट्रीज़ आदि?

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

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

एल्गोरिथम विश्लेषण के सीखने के साथ एक प्रोग्रामिंग भाषा (आपके मामले में जावा) के सीखने को अलग करें (जो एल्गोरिदम और डेटा संरचनाओं के "मेमोराइजेशन" से अलग है।)

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

सबसे अच्छा विचार एल्गोरिदम में अंडरग्रेजुएट, 3000-स्तरीय पाठ्यक्रम लेने से पहले प्रोग्रामिंग में 9-12 क्रेडिट पाठ्यक्रम लेना है। यह कहते हुए कि, मैंने जिन दो पुस्तकों का उल्लेख किया है, उनका स्व-अध्ययन एक अच्छा विकल्प हो सकता है (स्व-अध्ययन सभी के लिए नहीं हो सकता है, हालांकि)।

सौभाग्य!

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