المصفوفة في هيكل البيانات - الشرح والوظيفة والأمثلة

نشرت: 2021-06-21

أثبتت هياكل البيانات أنها جزء مهم من جميع لغات البرمجة تقريبًا التي تم تطبيقها على نطاق واسع في معظم برامج الكمبيوتر. من خلال هياكل البيانات يمكن إدارة البيانات والوصول إليها بشكل فعال من قبل البرامج حيث أن الوصول إلى البيانات الفردية وتخزينها بشكل منفصل عملية تستغرق وقتًا طويلاً. تم تصميم الخوارزميات خصيصًا لإنشاء عمليات محددة مطلوبة في بنية البيانات. لذلك ، تضع هياكل البيانات والخوارزميات معًا الأساس للتطبيقات والبرامج المعقدة.

في هذه المقالة ، سنركز على نوع من بنية البيانات ، أي المصفوفة.

المصفوفة هي نوع من بنية البيانات حيث يتم تخزين العناصر أو البيانات في مواقع متجاورة. عندما يكون لدى المستخدم مجموعة من البيانات بنفس نوع البيانات ، فإن بنية بيانات المصفوفة هي الخيار لتنظيم تلك البيانات. يعتمد حجم المصفوفة على حجم البيانات. قبل تخزين العناصر في مصفوفة ، يجب تحديد حجم المصفوفة بحيث تدمج جميع العناصر بشكل فعال. كل عنصر يتم تخزينه في مصفوفة له قيمة فهرس مخصصة له مما يساعد في تحديد موقع هذا العنصر في المصفوفة. العنصر الأول في المصفوفة له قيمة فهرسة تساوي صفر.

المصطلحات المهمة المرتبطة بهيكل بيانات المصفوفة هي:

  • العنصر : يمثل العنصر كل كائن أو عنصر مخزن في بنية البيانات.
  • الفهرس : يمثل الفهرس موقع العنصر في المصفوفة. لها قيمة عددية.

يتغير حجم المصفوفة مع لغات البرمجة المختلفة. بناءً على الحجم ، يمكن أن تتكون المصفوفة من نوعين: مصفوفة ثابتة وديناميكية.

جدول المحتويات

1. مجموعة ثابتة:

هذه الأنواع من المصفوفات لها أحجامها المحددة مسبقًا أثناء إنشائها. لهذا السبب ، تُعرف المصفوفات الثابتة أيضًا بالمصفوفات الثابتة أو المصفوفات ذات الطول الثابت. يمكن تعريف المصفوفة بطريقتين. يمكن تحديد عناصر المصفوفة أثناء إنشاء المصفوفة أو يمكن تحديد حجم المصفوفة أثناء إنشاء المصفوفة. في الحالة الأخيرة ، لا يلزم تحديد العناصر. يمكن تخصيص القيم الافتراضية لصفيف غير مهيأ أو قيم متبقية في الذاكرة من عمليات التخصيص السابقة.

لا يمكن أن يتقلص الصفيف أو يتوسع بمجرد تحديد الحجم. عندما يتم تخصيص الذاكرة أثناء إعلان المصفوفة ، فإن المترجم فقط هو الذي يمكنه تدمير المصفوفة. لا يمكن إضافة عنصر لأن المستخدم غير متأكد من وجود ذاكرة خالية لتخصيصها للعنصر التالي.

يوضح الجدول أدناه مثال المصفوفات المستخدمة في لغات البرمجة المختلفة.

لغة برمجة محتويات المصفوفة المحددة حجم المصفوفة المحدد بدون محتويات
سي ++ علامات int [] = {10، 20، 30} ؛ علامات int [3] ؛
سي # علامات int [] = {10، 20، 30} ؛ int [] mark = = new int [3]؛
جافا علامات int [] = {10، 20، 30} ؛ int [] mark = = new int [3]؛
جافا سكريبت فار ماركس = [10 ، 20 ، 30] ؛ علامات var = صفيف جديد (3) ؛
بايثون العلامات = [10 ، 20 ، 30] العلامات = [لا شيء] * 3
سويفت قيم var: [Int] = [10 ، 20 ، 30] علامات var: [Int] = [Int] (التكرار: 0 ، العدد: 3)

2. مصفوفة ديناميكية

كما يوحي الاسم ، فإن المصفوفة ديناميكية مما يعني أنه يمكن إضافة العناصر أو يمكن إزالتها أثناء وقت التشغيل. مقارنة بالمصفوفات الثابتة التي يكون طولها ثابتًا ، فإن المصفوفات الديناميكية ليس لها أي طول أو حجم ثابت للمصفوفة. تتوفر وظائف المكتبة القياسية أو الوظائف المضمنة في معظم لغات البرمجة لإنشاء المصفوفات الديناميكية وإدارتها.

يوضح الجدول أدناه إنشاء مصفوفة بلغات برمجة مختلفة

لغة برمجة فصل إضافة العنصر إزالة العنصر
سي ++ # تضمين <قائمة>

الأمراض المنقولة جنسيا :: قائمة

إدراج يمحو
سي # System.Collections.Generic.List يضيف إزالة
جافا java.util.ArrayList يضيف إزالة
جافا سكريبت مجموعة مصفوفة دفع ، لصق البوب ​​، لصق
بايثون قائمة ألحق إزالة
سويفت مجموعة مصفوفة ألحق إزالة

تمثيل مصفوفة

يختلف تمثيل المصفوفة وفقًا لتطبيقها في لغات البرمجة المختلفة. تعتبر المصفوفة جزءًا مهمًا من بنية بيانات Python ، وقد تم عرض رسم توضيحي في لغة برمجة Python.

يتم التعامل مع المصفوفات في بنية بيانات Python من خلال مصفوفة الكلمات الأساسية . كلما تم استخدام مصفوفة الكلمات الرئيسية ، يتعين على المستخدم تخزين عناصر من نفس أنواع البيانات.

مصدر

الشكل 1: مثال على مصفوفة

حسب الشكل 1 ، يوضح الرسم التوضيحي للمصفوفة ذلك

  • حجم المصفوفة هو 10 مما يعني أنه يمكن تخزين 9 عناصر في المصفوفة.
  • تم ذكر قيمة الفهرس أعلى المصفوفة التي تبدأ بقيمة 0.
  • يمكن أن تكون العناصر المخزنة في المصفوفة من أي نوع بيانات ، ويمكن الوصول إلى العنصر من خلال قيمة الفهرس الخاصة بها.

تم عرض رسم توضيحي آخر في الشكل 2 ، حيث تم وصف بناء جملة Python و C ++.

مصدر

الشكل 2 : إعلان المصفوفة باستخدام python و C ++ (

خصائص المصفوفة

بنية بيانات المصفوفة لها عدة خصائص:

  • العناصر المخزنة داخل مصفوفة لها نفس أنواع البيانات ونفس الحجم ، أي نوع بيانات int سيكون حجمه 4 بايت.
  • يتم استخدام موقع الذاكرة المتجاورة لتخزين عناصر بنية البيانات. يتم تخصيص أصغر ذاكرة للعنصر الأول في المصفوفة.
  • تُستخدم قيم الفهرس للعثور على موقع العناصر في المصفوفة. يبدأ الفهرس بالرقم 0 ويكون دائمًا أقل من العدد الإجمالي للعناصر في المصفوفة.
  • الوصول العشوائي للعناصر في المصفوفة ممكن بسبب قيمة الفهرس المتاحة. يمكن حساب عنوان العنصر من خلال العنوان الأساسي المضاف إلى قيمة الإزاحة.
  • يظل مفهوم المصفوفة كما هو في جميع لغات البرمجة. فقط التهيئة والإعلان تختلف.
  • اسم المصفوفة والعناصر ونوع البيانات هي الأجزاء الثلاثة التي ستكون مشتركة في جميع اللغات.

إنشاء مصفوفة

تم عرض إنشاء مصفوفة في بنية بيانات بيثون أدناه.

  • يمكن استيراد وحدة الصفيف في بنية بيانات Python لإنشاء مصفوفة.
  • المصفوفة (نوع البيانات ، قائمة القيمة ) هي الصيغة التي يمكن من خلالها إنشاء مصفوفة في بنية بيانات بيثون .
  • يجب أن يكون نوع البيانات أعدادًا صحيحة أو أعدادًا عائمة. الجمل غير مسموح بها في بيثون.

يوضح الشكل 2 كيفية إنشاء مصفوفة في بيثون. مثال على رمز يوضح كيفية استيراد وحدة مصفوفة في لغة بيثون

مجموعة الاستيراد

العلامات = array.array ('i'، [100،200،300])

طباعة (علامات)

يمكن تنفيذ إعلان المصفوفة من خلال

arrayName = array.array (اكتب رمز لنوع البيانات ، [مجموعة ، عناصر])

يمكن تمثيل ذلك في الشكل 3

مصدر

الشكل 3: إعلان الصفيف في بيثون

مصطلحات مهمة تستخدم في إنشاء المصفوفة:

  • المعرّف: اسم يجب تحديده كاسم للمتغيرات
  • الوحدة النمطية: يجب استيراد وحدة خاصة تسمى المصفوفة في بيثون.
  • الطريقة: هي طريقة محددة لتهيئة مصفوفة في بيثون. تم أخذ حجتين ، رمز الطباعة ، والعناصر.
  • رمز النوع: يجب تحديد نوع البيانات برمز النوع المتاح.
  • العناصر: يجب تحديد عناصر المصفوفة داخل الأقواس المربعة ، على سبيل المثال [200،400،100.]

يتم عرض رمز النوع المتاح أدناه

عمليات الصفيف

مع توافر هياكل البيانات والخوارزميات ، يمكن إجراء العديد من العمليات في أي نوع من أنواع بنية البيانات. يمكن أن تحتوي بنية بيانات المصفوفة على عمليات مثل إضافة عنصر وحذفه وضمه وتحديثه.

العمليات التي يمكن تنفيذها في مصفوفة من بنية بيانات بيثون مذكورة أدناه.

1. إضافة عنصر إلى مجموعة

  • تُستخدم وظيفة insert () المضمنة لإضافة عناصر إلى مصفوفة.
  • البنية المستخدمة : arrayName.insert (index، value)
  • يمكن إضافة عنصر واحد أو أكثر إلى المصفوفة من خلال وظيفة insert ().
  • يمكن إضافة العناصر إلى بداية المصفوفة أو في أي موضع محدد باستخدام الوظيفة Input: append ().

مجموعة الاستيراد

العلامات = array.array ('i'، [200،500،600])

marks.insert (1 ، 150)

الإخراج: مجموعة ('i'، [200،150،500،600])

يظهر مثال مع رمز أدناه مأخوذ من

إخراج الكود:

مصدر

2. حذف عنصر في المصفوفة

  • يمكن حذف عنصر من المصفوفة من خلال قيمته.
  • البنية المستخدمة: arrayName.remove (قيمة)
  • مثال: إزالة القيمة 250 بعد إضافتها في المصفوفة التي تحتوي على العناصر 100 و 300 و 200 و 500 و 800.

إدخال:

مجموعة الاستيراد

العلامات = array.array ('i'، [100،300،200،500،800])

marks.insert (1، 250)

طباعة (علامات)

مارك.إزالة (250)

الإخراج: مجموعة ('i'، [100،300،200،500،800])

مثال على رمز مأخوذ من

مصدر

إخراج الكود:

3. الوصول إلى عناصر في مصفوفة

  • عامل الفهرس [] يستخدم للوصول إلى العناصر في المصفوفة.
  • يتم استخدام رقم الفهرس للوصول إلى أي عنصر في المصفوفة .

يتم عرض مثال على رمز أدناه مأخوذ من

إخراج الكود:

مصدر

4. عنصر البحث في المصفوفة.

  • يتم استخدام طريقة الفهرس الداخلي () للبحث عن عنصر في المصفوفة.
  • يتم إرجاع قيمة الفهرس للعنصر المراد البحث عنه بواسطة الوظيفة.
  • مثال: البحث عن عنصر 250 في مصفوفة العناصر 100 و 250 و 300 و 200 و 500 و 800.

الإدخال: استيراد مجموعة

العلامات = array.array ('I'، [100،250،300،200،500،800])

طباعة (marks.index (250))

الإخراج: 1

كود للبحث عن عنصر في مصفوفة

ناتج الكود هو

مصدر

3. تحديث العناصر في المصفوفة

  • تتشابه عملية تحديث عنصر مع طريقة الإدراج مع الاختلاف الوحيد وهو أنه أثناء تحديث القيمة الحالية سيتم استبدالها في الفهرس المحدد.
  • يتم إعادة تعيين القيمة الجديدة إلى الفهرس لتحديث العنصر في المصفوفة.
  • مثال: تحديث عنصر 250 بـ 350 في مصفوفة العناصر 100 و 250 و 300 و 200 و 500 و 800.

الإدخال: استيراد مجموعة

العلامات = array.array ('i'، [100،250،300،200،500،800])

علامات [1] = 350

انتاج:

مجموعة ('i'، [100،350،300،200،500،800])

يظهر رمز يوضح تحديث عنصر أدناه

ناتج الكود هو

مصدر

مزايا المصفوفة

  • من الممكن تخزين قيم متعددة في متغير واحد بدلاً من إنشاء متغيرات منفصلة لكل عنصر.
  • يمكن معالجة القيم المتعددة بسهولة وبسرعة باستخدام المصفوفات.
  • يمكن فرز عناصر المصفوفة والبحث فيها بطريقة أسرع.

خاتمة

ناقش المقال نوعًا خاصًا من بنية البيانات ، أي المصفوفة والعمليات المرتبطة بها. باستخدام المفاهيم الأساسية ، يمكن بناء برامج أكثر تعقيدًا تستهدف مشاكل الحياة الواقعية. إذا كنت ترغب في تقوية أسس مفاهيم بنية البيانات الخاصة بك في لغة البايثون ، يمكنك الرجوع إلى الدورة التدريبية التالية لبرنامج Executive PG في علوم البيانات بواسطة upGrad. الدورة معتمدة من IIIT-Bangalore ولديها أكثر من 14 أداة ولغة برمجة لإعداد رحلتك نحو الصناعة. إنه مصمم خصيصًا للمهنيين المبتدئين ضمن الفئة العمرية من 21 إلى 45 عامًا. لذلك ، لا تتوقف عن التعلم هنا ، وتمسك باللغة وتطبيقها في عالم التعلم الآلي من خلال دورة upGrad. في حالة وجود أي استفسارات ، سيكون فريق المساعدة لدينا متواجدًا لمساعدتك.

ما هي مزايا وعيوب المصفوفة؟

المصفوفة هي بنية بيانات خطية قوية. ومع ذلك ، فإن لها بعض المزايا وكذلك العيوب المذكورة أدناه:
مزايا
1. في المصفوفة ، يمكن الوصول إلى العناصر بسهولة عن طريق أرقام الفهرس الخاصة بها.
2. يمكن استخدام المصفوفات لتخزين عدة كيانات متشابهة.
3. عملية البحث مريحة للغاية. يمكن القيام بذلك في O (n) time و O (log n) في مصفوفة مرتبة ، حيث n هو عدد العناصر.
سلبيات
1. نظرًا لأن الذاكرة مخصصة بشكل ثابت في مصفوفة ، فلا يمكن تغيير حجم المصفوفة.
2. إنها متجانسة ، أي يمكن تخزين العناصر التي لها نفس نوع البيانات فقط في مصفوفة.

التفرق بين المصفوفة والقائمة؟

يوضح ما يلي الفرق بين المصفوفة والقائمة.
مجموعة مصفوفة -
1. هيكل بيانات المصفوفة متجانسة ، أي أنه لا يمكن تخزين سوى العناصر ذات أنواع البيانات المتشابهة في مصفوفة.
2. يجب استيراد الوحدات النمطية قبل استخدام المصفوفة.
3. العمليات الحسابية قابلة للتطبيق مباشرة.
4. مفضل لبيانات أكبر.
4. أكثر إحكاما وتستهلك ذاكرة أقل.
قائمة -
1. القائمة غير متجانسة ويمكنها تخزين عناصر من أنواع بيانات متعددة بداخلها.
2. لا حاجة لاستيراد وحدات لأنه يحمل في ثناياه عوامل في بايثون.
3. لا يمكن إجراء العمليات الحسابية مباشرة.
4. يفضل البيانات الأصغر.
5. استهلاك الذاكرة أكثر.

وصف التطبيقات الرئيسية للمصفوفات؟

يحتوي هيكل بيانات المصفوفة على العديد من التطبيقات في الحياة الواقعية ، كما يتم استخدامه كقاعدة لتنفيذ هياكل البيانات الأخرى التي يحددها المستخدم. فيما يلي بعض التطبيقات الرئيسية للمصفوفات:
1. تستخدم المصفوفات لتنفيذ عمليات المصفوفة وتنفيذها. تستخدم المصفوفات بشكل كبير في المسوحات الجيولوجية والتجارب العلمية والبحثية.
2. يتم تنفيذ العديد من هياكل البيانات المعرفة من قبل المستخدم باستخدام هياكل بيانات الصفيف. وتشمل هذه المكدس وقائمة الانتظار والأكوام وجداول التجزئة والقوائم.
3. تستخدم البرامج المصفوفات لتنظيم تدفق التحكم بدلاً من استخدام عبارات elif التقليدية ، والتي تكون طويلة نسبيًا.
4. تستخدم الخوارزميات المكتوبة لعمليات جدولة وحدة المعالجة المركزية أيضًا بنية بيانات الصفيف لتحسين أداء وحدة المعالجة المركزية.
5. تستخدم الرسوم البيانية قوائم التقارب كأحد تطبيقاتها. يتم استخدام المتجهات (تطبيق المصفوفة) لإنشاء قوائم التقارب هذه.