सामग्री पर जाएँ

आंकड़ा संरचना में सरणी

मुक्त ज्ञानकोश विकिपीडिया से

कंप्यूटर विज्ञान में, सरणी (array) एक डेटा संरचना है, जिसमें समान डेटा प्रकार वाले तत्वों का एक क्रमबद्ध संग्रह होता है।[1] प्रत्येक तत्व को एक या अधिक सरणी सूचकांकों (array indices) या कुंजियों के माध्यम से पहचाना जाता है। सामान्यतः, सरणी एक रैखिक और परिवर्तनीय (mutable) संग्रह होती है, जिसमें तत्वों का डेटा प्रकार समान होता है। सरणी के तत्वों को इस प्रकार व्यवस्थित किया जाता है कि किसी तत्व का मेमोरी स्थान उसके सूचकांक या सूचकांकों के आधार पर एक गणितीय सूत्र द्वारा निर्धारित किया जा सकता है।[2]

एक-आयामी सरणी का चित्र

सरणी का सबसे सरल रूप रैखिक सरणी है, जिसे एक-आयामी सरणी भी कहा जाता है।[3] सरणी के पहले तत्व के मेमोरी पते को आधार पता (base address) कहा जाता है।[4]

विशेषताएँ

[संपादित करें]

सरणी की मुख्य विशेषताएँ निम्नलिखित हैं:

  • सन्निहित मेमोरी आवंटन: सरणी के सभी तत्व मेमोरी में एक साथ और क्रमबद्ध रूप से संग्रहीत होते हैं।[5]
  • निरंतर समय में पहुँच: किसी भी तत्व को उसके सूचकांक का उपयोग करके O(1) (निरंतर) समय में एक्सेस किया जा सकता है।[6][3]
  • समान डेटा प्रकार: एक सरणी के सभी तत्वों का डेटा प्रकार समान होता है।[3]
  • निश्चित आकार: अधिकांश भाषाओं में, सरणी का आकार निर्माण के समय निर्धारित होता है और बाद में नहीं बदला जा सकता (स्थैतिक सरणी)।[4]

सूचकांकन (Indexing)

[संपादित करें]

सरणी के तत्वों को सूचकांकों द्वारा पहचाना जाता है। सूचकांकन के तीन मुख्य प्रकार हैं:

0 (शून्य-आधारित सूचकांकन)
सरणी का पहला तत्व सूचकांक 0 द्वारा दर्शाया जाता है।[7] यह C, Java, और Lisp सहित कई प्रभावशाली प्रोग्रामिंग भाषाओं की डिज़ाइन पसंद है।
1 (एक-आधारित सूचकांकन)
सरणी का पहला तत्व सूचकांक 1 द्वारा दर्शाया जाता है। यह गणितीय परंपरा में प्रचलित है और FORTRAN 77 जैसी भाषाओं में उपयोग किया जाता है।
n (एन-आधारित सूचकांकन)
सरणी का आधार सूचकांक स्वतंत्र रूप से चुना जा सकता है। Fortran 90, Pascal, और Algol जैसी भाषाएँ उपयोगकर्ता को प्रत्येक सूचकांक के लिए न्यूनतम मान चुनने की अनुमति देती हैं।

बहुआयामी सरणियाँ

[संपादित करें]

सरणियों में एक से अधिक आयाम (dimensions) हो सकते हैं।[8] दो-आयामी सरणी को अक्सर मैट्रिक्स कहा जाता है।[9] तीन-आयामी सरणी को डेटा का एक ब्लॉक कहा जा सकता है।

बहुआयामी सरणियों के लिए दो मुख्य मेमोरी लेआउट हैं:

  • पंक्ति-प्रधान क्रम (Row-major order): प्रत्येक पंक्ति के तत्वों को क्रमागत स्थानों में संग्रहीत किया जाता है। यह C, C++, और Python/NumPy (डिफ़ॉल्ट) द्वारा अपनाया जाता है।[10]
  • स्तंभ-प्रधान क्रम (Column-major order): प्रत्येक स्तंभ के तत्वों को क्रमागत स्थानों में संग्रहीत किया जाता है। यह Fortran, Matlab, और R द्वारा उपयोग किया जाता है।[10]

अनुप्रयोग

[संपादित करें]

सरणियों का उपयोग कई क्षेत्रों में किया जाता है:

  • गणितीय सदिशों और मैट्रिक्सों का प्रतिनिधित्व करने के लिए[3]
  • डेटाबेस में रिकॉर्ड संग्रहीत करने के लिए
  • अन्य डेटा संरचनाओं (जैसे स्टैक, क्यू) को लागू करने के लिए[6]
  • लुकअप तालिकाओं (lookup tables) के रूप में
  • छवियों में पिक्सेल का प्रतिनिधित्व करने के लिए[6]
  • मशीन लर्निंग में प्रशिक्षण डेटा की विशेषताओं को संग्रहीत करने के लिए[6]

सरणी की अवधारणा प्रारंभिक डिजिटल कंप्यूटरों से जुड़ी है। जॉन वॉन न्यूमैन ने 1945 में पहला सरणी-सॉर्टिंग प्रोग्राम (मर्ज सॉर्ट) लिखा था।[11] प्रारंभिक उच्च-स्तरीय प्रोग्रामिंग भाषाओं, जिनमें FORTRAN (1957), Lisp (1958), COBOL (1960), और ALGOL 60 (1960) शामिल हैं, में बहुआयामी सरणियों के लिए समर्थन था, और C (1972) में भी यह सुविधा है।[2]

सन्दर्भ

[संपादित करें]
  1. Black, Paul E. (13 November 2008). "array". Dictionary of Algorithms and Data Structures. National Institute of Standards and Technology. अभिगमन तिथि: 22 August 2010.
  2. 1 2 Garcia, Ronald; Lumsdaine, Andrew (2005). "MultiArray: a C++ library for generic programming with arrays". Software: Practice and Experience. 35 (2): 159–188. डीओआई:10.1002/spe.630. आईएसएसएन 0038-0644. एस2सीआईडी 10890293.
  3. 1 2 3 4 "Linear Lists Accessed Directly". Taylor & Francis. अभिगमन तिथि: 2026-08-15.
  4. 1 2 Andres, Bjoern; Koethe, Ullrich; Kroeger, Thorben; Hamprecht, Fred A. (August 2010). "Runtime-Flexible Multi-dimensional Arrays and Views for C++98 and C++0x". आर्काइव:1008.2909 [cs.DS].
  5. "Common Data Structures". TAU - Tuning and Analysis Utilities. मूल से से 2025-03-11 को पुरालेखित।. अभिगमन तिथि: 2026-08-15.
  6. 1 2 3 4 "Array Data Structures and Algorithms in Java". GUVI. 2025-10-21. मूल से से 2025-03-13 को पुरालेखित।. अभिगमन तिथि: 2026-08-15.
  7. "Array Code Examples". Computer Programming Web programming Tips. मूल से से 2011-04-13 को पुरालेखित।. अभिगमन तिथि: 2011-04-08.
  8. "Dimensional Array". ScienceDirect. अभिगमन तिथि: 2026-08-15.
  9. "Two-Dimensional Arrays". Processing.org. अभिगमन तिथि: 2020-05-01.
  10. 1 2 "Arrays in R and Python". CRAN. अभिगमन तिथि: 2026-08-15.
  11. "Merge Sort Explained: A Data Scientist's Algorithm Guide". NVIDIA Technical Blog (अमेरिकी अंग्रेज़ी भाषा में). 2022-03-31. अभिगमन तिथि: 2026-08-16.