PHP में एल्गोरिदम और डेटा संरचनाएँ: व्यावहारिक दृष्टिकोण
\n\nवेब डेवलपमेंट की दुनिया में PHP सबसे लोकप्रिय भाषाओं में से एक बना हुआ है। लेकिन कई डेवलपर्स, जो सिंटैक्स से परिचित हैं, अक्सर मूलभूत अवधारणाओं — एल्गोरिदम और डेटा संरचनाओं को नजरअंदाज कर देते हैं। इन विषयों को समझना न केवल कोड की गुणवत्ता में सुधार करता है, बल्कि आपको इंटरव्यू में अधिक प्रतिस्पर्धी विशेषज्ञ भी बनाता है। इस लेख में हम PHP में प्रमुख एल्गोरिदम और डेटा संरचनाओं को वास्तविक कोड उदाहरणों के साथ समझेंगे, जिन्हें आप तुरंत अपने प्रोजेक्ट्स में लागू कर सकते हैं।
\n\n1. बुनियादी डेटा संरचनाएँ: स्टैक और क्यू
\n\nस्टैक और क्यू रैखिक डेटा संरचनाएँ हैं जो वास्तविक एप्लिकेशन में अक्सर उपयोग होती हैं। स्टैक LIFO (Last In, First Out) सिद्धांत पर काम करता है, जबकि क्यू FIFO (First In, First Out) पर। PHP में इन्हें बिल्ट-इन ऐरे फंक्शन का उपयोग करके लागू किया जा सकता है।
\n\nस्टैक का कार्यान्वयन
\n<?php\nclass Stack {\n private $stack = [];\n\n public function push($item) {\n array_push($this->stack, $item);\n }\n\n public function pop() {\n if ($this->isEmpty()) {\n return null;\n }\n return array_pop($this->stack);\n }\n\n public function peek() {\n return end($this->stack);\n }\n\n public function isEmpty() {\n return empty($this->stack);\n }\n}\n\n// उपयोग का उदाहरण\n$stack = new Stack();\n$stack->push("पहला");\n$stack->push("दूसरा");\n$stack->push("तीसरा");\necho $stack->pop(); // तीसरा\necho $stack->peek(); // दूसरा\n?>\n\nक्यू का कार्यान्वयन
\n<?php\nclass Queue {\n private $queue = [];\n\n public function enqueue($item) {\n array_push($this->queue, $item);\n }\n\n public function dequeue() {\n if ($this->isEmpty()) {\n return null;\n }\n return array_shift($this->queue);\n }\n\n public function front() {\n return reset($this->queue);\n }\n\n public function isEmpty() {\n return empty($this->queue);\n }\n}\n\n// उपयोग का उदाहरण\n$queue = new Queue();\n$queue->enqueue("पहला");\n$queue->enqueue("दूसरा");\n$queue->enqueue("तीसरा");\necho $queue->dequeue(); // पहला\necho $queue->front(); // दूसरा\n?>\n\nये डेटा संरचनाएँ बफर, एक्शन हिस्ट्री (undo/redo) और क्रम में कार्यों को प्रोसेस करने में अपरिहार्य हैं।
\n\n2. PHP में सॉर्टिंग एल्गोरिदम
\n\nसॉर्टिंग प्रोग्रामिंग में सबसे आम ऑपरेशनों में से एक है। आइए दो क्लासिक कार्यान्वयन देखें: बबल सॉर्ट (सीखने के लिए) और क्विक सॉर्ट (वास्तविक उपयोग के लिए)।
\n\nबबल सॉर्ट
\n<?php\nfunction bubbleSort(&$arr) {\n $n = count($arr);\n for ($i = 0; $i < $n - 1; $i++) {\n for ($j = 0; $j < $n - $i - 1; $j++) {\n if ($arr[$j] > $arr[$j + 1]) {\n // मानों की अदला-बदली\n $temp = $arr[$j];\n $arr[$j] = $arr[$j + 1];\n $arr[$j + 1] = $temp;\n }\n }\n }\n}\n\n$numbers = [64, 34, 25, 12, 22, 11, 90];\nbubbleSort($numbers);\nprint_r($numbers); // [11, 12, 22, 25, 34, 64, 90]\n?>\n\nजटिलता: O(n²) — बड़े ऐरे के लिए उपयुक्त नहीं, लेकिन सिद्धांत को समझाने के लिए बढ़िया।
\n\nक्विक सॉर्ट
\n<?php\nfunction quickSort($arr) {\n if (count($arr) < 2) {\n return $arr;\n }\n\n $pivot = $arr[0];\n $left = $right = [];\n\n for ($i = 1; $i < count($arr); $i++) {\n if ($arr[$i] < $pivot) {\n $left[] = $arr[$i];\n } else {\n $right[] = $arr[$i];\n }\n }\n\n return array_merge(quickSort($left), [$pivot], quickSort($right));\n}\n\n$numbers = [3, 6, 8, 10, 1, 2, 1];\n$sorted = quickSort($numbers);\nprint_r($sorted); // [1, 1, 2, 3, 6, 8, 10]\n?>