What is an Array?
Array एक और linear data structure है, लेकिन यह Linked List से काफी अलग तरीके से काम करती है।
- Array को एक shelf या continuous line of boxes की तरह समझो।
- यह एक ही type के data items (जैसे सिर्फ numbers, या सिर्फ names) को एक साथ, एक के बाद एक (contiguously), memory में store करता है।
Memory Allocation (मेमोरी का आवंटन)
Array की सबसे खास बात यह है कि इसके सारे elements को memory में adjacent (एक दूसरे से सटे हुए) जगह मिलती है।
- अगर आपके पास 5 elements का एक Array है, तो memory में ये 5 elements एक साथ लाइन में रखे होंगे।
- इससे data access बहुत fast हो जाता है।
Indexing (इंडेक्सिंग)
Array के हर element को उसकी position से पहचाना जाता है, जिसे Index (इंडेक्स) कहते हैं।
- Indexing हमेशा 0 (शून्य) से शुरू होती है।
- अगर Array का size 'N' है, तो indices `0, 1, 2, ..., N-1` तक होंगे।
Example: अगर आपके Array का नाम `Marks` है और उसमें 5 elements हैं: `[85, 92, 78, 65, 99]`
| Value (वैल्यू) | 85 | 92 | 78 | 65 | 99 |
|---|---|---|---|---|---|
| Index (इंडेक्स) | 0 | 1 | 2 | 3 | 4 |
आप `Marks[2]` कहकर सीधे `78` की value access कर सकते हैं।
Array के Types (Types of Array)
Array को उसके dimensions के आधार पर classify किया जाता है:
1. One-Dimensional Array (1D Array)
- यह सबसे simple array है, जो एक single row या column की तरह होती है।
- इसे access करने के लिए सिर्फ एक index की जरूरत होती है (जैसे: `Marks[i]`)।
2. Multi-Dimensional Array (2D/3D Array)
- Two-Dimensional Array (2D Array): इसे Matrix (मैट्रिक्स) या Table (टेबल) की तरह समझो, जिसमें Rows और Columns होते हैं。
- इसे access करने के लिए दो indices की जरूरत होती है (जैसे: `Matrix[row][column]`)।
- Three-Dimensional Array (3D Array): यह 2D Arrays के collection की तरह होता है, जैसे stacked plates।
Array के Operations (Array Operations)
Array पर common operations ये हैं:
1. Traversal (ट्रेवर्सल)
- Index 0 से शुरू करके, last index तक array के हर element को एक-एक करके visit करना।
2. Insertion (डालना)
- Array में एक नया element add करना。
- Challenging Part: चूंकि Array का size fixed होता है, इसलिए अगर array full है, तो insertion से पहले पुराने elements को shift करना पड़ता है, या फिर नया, बड़ा array बनाना पड़ता है।
3. Deletion (हटाना)
- Array से एक element remove करना。
- Challenging Part: element delete होने के बाद, उसके आगे वाले elements को एक position पीछे shift करना पड़ता है ताकि memory continuous बनी रहे।
4. Search (खोज)
- Array में एक specific value को ढूँढना। यह Linear Search (एक-एक करके चेक करना) या Binary Search (अगर array sorted है तो बहुत तेज़) हो सकता है।
5. Update (अपडेट)
- किसी index पर मौजूद element की value को बदलना। (जैसे: `Marks[3] = 70`)
Array और Linked List में अंतर (Summary)
| Feature | Array | Linked List |
|---|---|---|
| Size (साईज) | Static (usually fixed), या dynamic Array (लेकिन slow)। | Dynamic (easily grows/shrinks)। |
| Memory Allocation | Contiguous (एक के बाद एक, लगातार जगह)। | Non-Contiguous (कहीं भी, pointers से जुड़े होते हैं)। |
| Accessing (पहुँचना) | Random Access (बहुत Fast, O(1))। सीधे index से पहुँच सकते हैं। | Sequential Access (Slow, O(n))। Head से शुरू करना पड़ता है। |
| Insertion/Deletion | Slow (O(n)) क्योंकि shifting करनी पड़ती है। | Fast (O(1)) अगर node का address पता हो। |
| Memory Usage | Efficient (पॉइंटर का overhead नहीं)। | Overhead (Pointers के लिए extra memory)। |
Array के फायदे (Advantages)
- Fast Access (तेज़ एक्सेस): Random Access के कारण आप किसी भी element को तुरंत access कर सकते हैं (O(1) time)।
- Memory Locality: सारे elements एक साथ होते हैं, जिससे CPU Cache अच्छा काम करता है और performance बढ़ती है।
Array के नुकसान (Disadvantages)
- Fixed Size (निश्चित साइज़): ज्यादातर Arrays का size पहले से define करना पड़ता है। अगर data ज़्यादा आ जाए तो space कम पड़ सकती है।
- Slow Insertion/Deletion (धीमा इन्सर्शन/डिलीशन): बीच में कुछ insert या delete करने पर बहुत सारे elements को shift करना पड़ता है, जो time consuming है।
- Memory Waste: अगर आपने बड़ा array बनाया है, पर उसमें कम data store किया है, तो बाकी की memory waste हो जाती है।
Comments
Post a Comment