C# में एल्गोरिदम और डेटा संरचनाएँ: डेवलपर के लिए पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें
```html

C# में एल्गोरिदम और डेटा संरचनाओं का परिचय



एल्गोरिदम और डेटा संरचनाएँ वह नींव हैं जिस पर कोई भी गुणवत्तापूर्ण सॉफ्टवेयर बनाया जाता है। .NET इकोसिस्टम और C# भाषा में, इन अवधारणाओं की समझ न केवल अधिक कुशल कोड लिखने में मदद करती है, बल्कि समृद्ध स्टैंडर्ड लाइब्रेरी (BCL — Base Class Library) से सही टूल चुनने में भी सक्षम बनाती है। डेटा संरचना का चुनाव एप्लिकेशन की गति, मेमोरी खपत और अंततः उपयोगकर्ता अनुभव को प्रभावित करता है।



इस लेख में, हम उन प्रमुख डेटा संरचनाओं और एल्गोरिदम पर चर्चा करेंगे जो प्रत्येक C# डेवलपर को जानना चाहिए। हम उनके कार्यान्वयन, प्रदर्शन विशेषताओं (Big O नोटेशन) और व्यावहारिक कोड उदाहरणों पर विचार करेंगे। यह लेख शुरुआती और अनुभवी प्रोग्रामर दोनों के लिए उपयुक्त है जो अपने ज्ञान को व्यवस्थित करना चाहते हैं।



C# में मुख्य डेटा संरचनाएँ



Arrays और Lists (Array vs List)



Array — यह एक फिक्स्ड डेटा संरचना है जो एक ही प्रकार के तत्वों को मेमोरी के सन्निकट क्षेत्र में संग्रहीत करती है। इंडेक्स द्वारा एक्सेस O(1) में होता है, लेकिन तत्वों का इंसर्शन और डिलीट (अंत के अलावा) शिफ्टिंग के कारण O(n) की आवश्यकता होती है।



int[] numbers = new int[5] { 10, 20, 30, 40, 50 };Console.WriteLine(numbers[2]); // 30


List<T> — यह एक डायनामिक array है। यह तत्वों को जोड़ने पर स्वचालित रूप से अपनी क्षमता बढ़ाता है। आंतरिक रूप से यह एक array का उपयोग करता है, इसलिए इंडेक्स द्वारा एक्सेस की गति भी O(1) है। हालांकि, बीच या शुरुआत में इंसर्शन O(n) है।



List<string> names = new List<string>() { "Anna", "Boris" };names.Add("Victor");names.Insert(1, "Gleb"); // O(n)Console.WriteLine(names[0]); // Anna


Stack और Queue (Stack और Queue)



Stack<T> LIFO (Last In, First Out) सिद्धांत पर काम करता है। इसका उपयोग ट्रैवर्सल एल्गोरिदम, एक्सप्रेशन पार्सिंग और कॉल मैनेजमेंट के लिए किया जाता है।



Stack<int> stack = new Stack<int>();stack.Push(1);stack.Push(2);stack.Push(3);int top = stack.Pop(); // 3


Queue<T> FIFO (First In, First Out) सिद्धांत पर काम करता है। इसका उपयोग टास्क प्रोसेसिंग सिस्टम और डेटा बफरिंग में किया जाता है।



Queue<string> queue = new Queue<string>();queue.Enqueue("Task 1");queue.Enqueue("Task 2");string next = queue.Dequeue(); // "Task 1"


दोनों संरचनाएँ array (साइक्लिक बफर) पर आधारित हैं और औसतन O(1) में इंसर्शन और डिलीट ऑपरेशन प्रदान करती हैं।



Dictionary (Dictionary)



Dictionary<TKey, TValue> — यह एक हैश टेबल है। यह कुंजी द्वारा तत्वों की खोज, इंसर्शन और डिलीट औसतन O(1) में प्रदान करता है (अच्छे हैश फंक्शन के साथ)। यह C# में सबसे अधिक उपयोग की जाने वाली डेटा संरचनाओं में से एक है।



Dictionary<string, int> ages = new Dictionary<string, int>();ages["Alice"] = 30;ages["Bob"] = 25;

if (ages.ContainsKey("Alice")){ Console.WriteLine(ages["Alice"]); // 30}


महत्वपूर्ण: Dictionary में कुंजियाँ अद्वितीय होनी चाहिए और उन्हें IEquatable<T> इंटरफ़ेस लागू करना चाहिए या सही ढंग से ओवरराइड किए गए GetHashCode() और Equals() होने चाहिए।



LinkedList (LinkedList)



LinkedList<T> — यह एक डबली लिंक्ड लिस्ट है। List के विपरीत, लिस्ट के बीच में इंसर्शन और डिलीट O(1) में किया जाता है (यदि आपके पास नोड का संदर्भ है)। हालांकि, इंडेक्स द्वारा एक्सेस O(n) है। इसका उपयोग कम बार किया जाता है, लेकिन यह दो-तरफा एक्सेस वाली कतारों और LRU कैश के लिए अपरिहार्य है।



LinkedList<int> list = new LinkedList<int>();list.AddLast(1);list.AddLast(2);list.AddFirst(0);

LinkedListNode<int> node = list.Find(1);list.AddAfter(node, 10); // O(1)


C# में सॉर्टिंग और सर्चिंग एल्गोरिदम



QuickSort



QuickSort —

```

ब्लॉग

पुस्तक अनुशंसाएँ