इस प्रोजेक्ट के बारे में

यह रिपॉजिटरी Java में लिखे गए एल्गोरिदम और डेटा संरचना कार्यान्वयनों का एक व्यवस्थित संग्रह है, जिसे सामान्य कम्प्यूटेशनल तकनीकों के सही और सुरुचिपूर्ण कार्यान्वयन को प्रदर्शित करने के लिए डिज़ाइन किया गया है। यह डेवलपर्स और छात्रों दोनों के लिए एक संदर्भ पुस्तकालय और शैक्षिक संसाधन के रूप में कार्य करता है। परियोजना में प्रमुख अनुभागों में विभिन्न विषय शामिल हैं: डेटा संरचनाएँ: संतुलित पेड़ (AVL, Red-Black), बाइनरी सर्च पेड़, splay पेड़, गतिशील सरणियाँ, Fenwick पेड़, Fibonacci हीप, हैशटेबल (कई collision resolution रणनीतियों के साथ), लिंक्ड सूचियाँ, प्राथमिकता कतारें (binary heap, D-heap, indexed variants), कतारें, सेगमेंट पेड़, sparse table, स्टैक, suffix array, trie और union-find संरचनाएँ। डायनामिक प्रोग्रामिंग: क्लासिक समस्याएँ जैसे coin change, edit distance, knapsack प्रकार, अधिकतम सन्निहित subarray, दीर्घतम सामान्य/बढ़ती/पैलिंड्रोम subsequence, traveling salesman problem, और न्यूनतम भार पूर्ण मिलान। साथ ही tiling समस्याओं और adhoc चुनौतियों जैसे व्यावहारिक उदाहरण भी शामिल हैं। ज्यामिति: 2D और 3D वेक्टर संचालन, वृत्त और रेखा प्रतिच्छेदन एल्गोरिदम, निकटतम बिंदु युग्म, उत्तल पतवार निर्माण (Graham Scan और Monotone Chain), बहुभुज क्षेत्रफल और समावेशन जाँच, त्रिभुज क्षेत्रफल गणना, और भौगोलिक दूरी गणना। ग्राफ थ्योरी: एक व्यापक अनुभाग जिसमें वृक्ष एल्गोरिदम (rooting, isomorphism, center, diameter, LCA), नेटवर्क प्रवाह एल्गोरिदम (Ford-Fulkerson, Edmonds-Karp, Dinic's, capacity scaling, min-cost max-flow), और BFS, DFS, Dijkstra's, Bellman-Ford, Floyd-Warshall, topological sort, न्यूनतम विस्तारित वृक्ष (Kruskal's, Prim's, Boruvka's), दृढ़ता से जुड़े घटक (Tarjan's, Kosaraju's), articulation points, bridges, और Eulerian path जैसे मुख्य एल्गोरिदम शामिल हैं। रैखिक बीजगणित: Gaussian elimination, मैट्रिक्स संचालन (determinant, inverse, multiplication, power), Freivald's algorithm, और रैखिक पुनरावृत्ति समाधानकर्ता शामिल हैं। गणित: संख्या सिद्धांत विषय जिनमें चीनी शेष प्रमेय, अभाज्य संख्या छलनी, Euler's totient function, विस्तारित Euclidean एल्गोरिदम, GCD, और Fast Fourier Transform शामिल हैं। परियोजना Bazel को अपनी बिल्ड प्रणाली के रूप में उपयोग करती है (JDK 8+ की आवश्यकता है), जिसमें व्यक्तिगत एल्गोरिदम या पूर्ण परीक्षण सूट चलाने के लिए स्पष्ट निर्देश हैं। कई कार्यान्वयनों में William Fiset YouTube चैनल पर संगत वीडियो स्पष्टीकरण शामिल हैं, जो दृश्य शिक्षार्थियों के लिए इसे सुलभ बनाता है। प्रत्येक एल्गोरिदम प्रविष्टि में आमतौर पर इसकी समय जटिलता शामिल होती है, और कोड सुसंगत नामकरण परंपराओं के साथ विषय द्वारा व्यवस्थित होता है। रिपॉजिटरी MIT लाइसेंस के अंतर्गत है और इसमें Bazel परीक्षण और README URL जाँच के लिए CI/CD बैज शामिल हैं।