जावा में एल्गोरिदम और डेटा संरचनाएँ: शुरुआती लोगों के लिए पूर्ण गाइड

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

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

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

जावा में एल्गोरिदम और डेटा संरचनाएँ: शुरुआत से आत्मविश्वासी डेवलपर तक



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



1. Java में मुख्य डेटा संरचनाएँ



डेटा संरचनाएँ डेटा को व्यवस्थित और संग्रहीत करने के तरीके हैं। Java में बिल्ट-इन कलेक्शंस का एक समृद्ध सेट है, लेकिन यह समझना कि वे "हुड के नीचे" कैसे काम करते हैं, आपको सही आर्किटेक्चरल निर्णय लेने में मदद करेगा।



1.1 ऐरे (Arrays)



ऐरे सबसे सरल डेटा संरचना है, जो एक ही प्रकार के तत्वों को मेमोरी के सन्निकट क्षेत्र में संग्रहीत करती है। Java में, ऐरे की एक निश्चित लंबाई होती है।



// ऐरे की घोषणा और इनिशियलाइज़ेशनint[] numbers = new int[5];numbers[0] = 10;numbers[1] = 20;numbers[2] = 30;numbers[3] = 40;numbers[4] = 50;

// या सीधे मानों के साथString[] fruits = {"सेब", "केला", "संतरा"};

// ऐरे पर लूपfor (int i = 0; i < fruits.length; i++) { System.out.println(fruits[i]);}

// बेहतर for-eachfor (String fruit : fruits) { System.out.println(fruit);}


लाभ: इंडेक्स द्वारा तेज़ एक्सेस (O(1))।
नुकसान: निश्चित आकार, तत्वों को सम्मिलित और हटाने में कठिनाई।



1.2 लिंक्ड लिस्ट (LinkedList)



लिंक्ड लिस्ट नोड्स से बनी होती है, जिनमें से प्रत्येक में डेटा और अगले (या पिछले) नोड का संदर्भ होता है। Java में java.util.LinkedList का बिल्ट-इन कार्यान्वयन है।



import java.util.LinkedList;

LinkedList<String> list = new LinkedList<>();list.add("पहला");list.add("दूसरा");list.addFirst("शून्यवाँ"); // शुरुआत में जोड़नाlist.addLast("तीसरा"); // अंत में जोड़ना

System.out.println("पहला तत्व: " + list.getFirst());System.out.println("अंतिम तत्व: " + list.getLast());System.out.println("लिस्ट का आकार: " + list.size());

// तत्व हटानाlist.remove("दूसरा");


लाभ: लिस्ट की शुरुआत/अंत में तेज़ सम्मिलन और हटाना (O(1))।
नुकसान: इंडेक्स द्वारा धीमी एक्सेस (O(n))।



1.3 स्टैक (Stack)



स्टैक LIFO (Last In, First Out) सिद्धांत पर काम करता है — सबसे बाद में आया, सबसे पहले बाहर। Java स्टैक के साथ काम करने के लिए Stack क्लास और Deque इंटरफ़ेस प्रदान करता है।



import java.util.Stack;

Stack<Integer> stack = new Stack<>();

// तत्व जोड़नाstack.push(10);stack.push(20);stack.push(30);

// बिना हटाए शीर्ष तत्व देखनाSystem.out.println("शीर्ष तत्व: " + stack.peek()); // 30

// शीर्ष तत्व निकालनाint top = stack.pop();System.out.println("निकाला गया: " + top); // 30System.out.println("नया शीर्ष: " + stack.peek()); // 20

// जाँचना कि स्टैक खाली है या नहींSystem.out.println("क्या स्टैक खाली है? " + stack.isEmpty()); // false


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



1.4 क्यू (Queue)



क्यू FIFO (First In, First Out) सिद्धांत पर काम करता है — सबसे पहले आया, सबसे पहले बाहर। Java में, क्यू को Queue इंटरफ़ेस और LinkedList क्लास के माध्यम से कार्यान्वित किया जाता है।



import java.util.LinkedList;import java.util.Queue;

Queue<String> queue = new LinkedList<>();

// क्यू के अंत में जोड़नाqueue.offer("ग्राहक 1");queue.offer("ग्राहक 2");queue.offer("ग्राहक 3");

ब्लॉग

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