المصفوفة في بنية البيانات: ما هي المصفوفات Opera[أمثلة]
ما هو المصفوفة في بنية البيانات؟
An مجموعة عبارة عن بنية بيانات لتخزين أكثر من عنصر بيانات له نوع بيانات مماثل. يتم تخصيص عناصر المصفوفة في مواقع الذاكرة المجاورة. يتم استدعاء مواقع الذاكرة هذه عناصر من تلك المصفوفة. يتم استدعاء العدد الإجمالي للعناصر في المصفوفة الطول.
يتم الوصول إلى تفاصيل المصفوفة حول موقعها. يُطلق على هذا المرجع اسم مؤشر or منخفض.
مفهوم المصفوفة

ويوضح الرسم البياني أعلاه ما يلي:
- المصفوفة عبارة عن حاوية من العناصر.
- العناصر لها قيمة ونوع بيانات محددين، مثل "ABC" أو "TRUE" أو "FALSE" وما إلى ذلك.
- يحتوي كل عنصر أيضًا على فهرس خاص به، والذي يستخدم للوصول إلى العنصر.
ملاحظة:
- يتم تخزين العناصر في مواقع ذاكرة متجاورة.
- يكون الفهرس دائمًا أقل من إجمالي عدد عناصر المصفوفة.
- من حيث بناء الجملة، يمكن لأي متغير يتم تعريفه كمصفوفة تخزين قيم متعددة.
- تمتلك جميع اللغات تقريبًا نفس الفهم للمصفوفات ولكن لديها طرق مختلفة للإعلان عنها وتهيئتها.
- ومع ذلك، ستظل الأجزاء الثلاثة شائعة دائمًا في جميع عمليات التهيئة، أي اسم المصفوفة والعناصر ونوع بيانات العناصر.
يوضح الرسم التخطيطي التالي بناء جملة إعلان مصفوفة في Python و C++ لإظهار أن الفهم يظل كما هو على الرغم من أن بناء الجملة قد يختلف قليلاً في اللغات المختلفة.
- اسم الصفيف: ضروري لسهولة الرجوع إلى مجموعة العناصر
- نوع البيانات: ضروري لفحص النوع وسلامة البيانات
- عناصر: هذه هي قيم البيانات الموجودة في المصفوفة
لماذا نحتاج المصفوفات؟
فيما يلي بعض الأسباب لاستخدام المصفوفات في بنية البيانات:
- المصفوفات هي الأفضل لتخزين قيم متعددة في متغير واحد
- المصفوفات أفضل في معالجة العديد من القيم بسهولة وبسرعة
- فرز القيم والبحث عنها أسهل في المصفوفات
إنشاء مصفوفة في Python
In Pythonتختلف المصفوفات عن القوائم؛ يمكن أن تحتوي القوائم على عناصر مصفوفة من أنواع البيانات، بينما يمكن أن تحتوي المصفوفات فقط على عناصر من نفس نوع البيانات.
Python يحتوي على وحدة منفصلة للتعامل مع المصفوفات تسمى المصفوفة، والتي تحتاج إلى استيرادها قبل البدء في العمل عليها.
ملاحظة: يجب أن تحتوي المصفوفة على أرقام حقيقية مثل الأعداد الصحيحة والأعداد العشرية، ولا يُسمح بالسلاسل.
يوضح الكود التالي كيفية إنشاء مصفوفة عددية صحيحة في بايثون لتخزين رصيد الحساب:
import array
balance = array.array('i', [300,200,100])
print(balance)
طرق للإعلان عن مصفوفة في Python
يمكنك الإعلان عن مصفوفة في Python أثناء تهيئته باستخدام بناء الجملة التالي.
arrayName = array.array(type code for data type, [array,items])
الصورة التالية توضح بناء الجملة.
- تحديد: حدد اسمًا كما تفعل عادةً للمتغيرات
- وحدة: Python يحتوي على وحدة خاصة لإنشاء المصفوفات تسمى "المصفوفة" - يجب عليك استيرادها قبل استخدامها
- الأسلوب: وحدة المصفوفة لديها طريقة لتهيئة المصفوفة. يستغرق وسيطتين، ورمز الكتابة، والعناصر.
- كود نوع: حدد نوع البيانات باستخدام رموز الكتابة المتاحة (انظر القائمة أدناه)
- عناصر: حدد عناصر المصفوفة الموجودة بين الأقواس المربعة، على سبيل المثال [130,450,103]
يوضح الجدول التالي رموز الأنواع المتوفرة لأنواع البيانات المدعومة:
| كود نوع | نوع C | Python النوع | الحد الأدنى للحجم بالبايت |
|---|---|---|---|
| "ج" | دبابة | حرف | 1 |
| 'ب' | شار غير موقعة | مادبا | 1 |
| 'ب' | علامة موقعة | مادبا | 1 |
| 'u' | Py_UNICOD | حرف Unicode | 2 |
| "ح" | وقعت قصيرة | مادبا | 2 |
| "ح" | قصيرة غير موقعة | مادبا | 2 |
| 'أنا' | وقعت كثافة العمليات | مادبا | 2 |
| 'أنا' | كثافة العمليات غير الموقعة | التداول الطويل | 2 |
| 'l' | وقعت طويلة | مادبا | 4 |
| "L" | غير موقعة طويلة | التداول الطويل | 4 |
| 'F' | الطفو | الطفو | 4 |
| 'د' | مضاعفة | الطفو | 8 |
كيفية الوصول إلى قيمة مجموعة محددة؟
يمكنك الوصول إلى أي عنصر مصفوفة باستخدام الفهرس الخاص به.
بناء الجملة
arrayName[indexNum]
على سبيل المثال:
balance[1]
الصورة التالية توضح المفهوم الأساسي للوصول إلى عناصر المصفوفة حسب فهرسها.
هنا، وصلنا إلى القيمة الثانية للمصفوفة باستخدام فهرسها، وهو 1. سيكون الناتج 200، وهي في الأساس القيمة الثانية للمصفوفة المتوازنة.
import array
balance = array.array('i', [300,200,100])
print(balance[1])
OUTPUT
200
مجموعة Operaستعقد
وحدة المصفوفة Python يحتوي على وظائف منفصلة لإجراء عمليات المصفوفة. هذه طريقة مدمرة للعمل مع المصفوفات، مما يعني أن التعديل سيتم حفظه في متغير المصفوفة.
إدراج
باستخدام هذه العملية، يمكنك إدراج عنصر واحد أو أكثر في مصفوفة في البداية أو النهاية أو أي مؤشر معين للمصفوفة. تتوقع هذه الطريقة وجود وسيطتين هما الفهرس والقيمة.
بناء الجملة
arrayName.insert(index, value)
على سبيل المثال:
دعونا نضيف قيمة جديدة مباشرة بعد العنصر الثاني من المصفوفة. حاليًا، تحتوي مصفوفة التوازن لدينا على ثلاثة عناصر 300 و200 و100. إذن ما هو فهرس عنصر المصفوفة الثانية بقيمة 200 إذا قلت 1.
من أجل إدراج القيمة الجديدة مباشرة بعد الفهرس 1، تحتاج إلى الرجوع إلى الفهرس 2 في طريقة الإدراج الخاصة بك، مثل هذا:
import array
balance = array.array('i', [300,200,100])
balance.insert(2, 150)
الآن، للتحقق من إدراج القيمة الجديدة، أدخل اسم المصفوفة واضغط على Enter بلوحة المفاتيح:
import array
balance = array.array('i', [300,200,100])
balance.insert(2, 150)
print(balance)
OUTPUT
array('i', [300,200,150,100])
حذف
باستخدام هذه العملية، يمكنك حذف عنصر واحد من المصفوفة حسب القيمة. تقبل هذه الطريقة وسيطة واحدة فقط، وهي القيمة. بعد تشغيل هذه الطريقة، يتم إعادة ترتيب عناصر المصفوفة وإعادة تعيين الفهارس.
بناء الجملة
arrayName.remove(value)
على سبيل المثال:
دعونا نزيل القيمة 150 من المصفوفة. حاليًا، تحتوي مصفوفة التوازن لدينا على أربعة عناصر 300 و200 و150 و100. لذا، لإزالة 150 من المصفوفة، علينا فقط كتابة 150 داخل وسيطة الطريقة. بسيطة، أليس كذلك؟
import array
balance = array.array('i', [300,200,100])
balance.insert(2, 150)
print(balance)
balance.remove(150)
الآن، للتحقق من حذف القيمة، أدخل اسم المصفوفة واضغط على Enter بلوحة المفاتيح:
import array
balance = array.array('i', [300,200,100])
balance.insert(2, 150)
print(balance)
balance.remove(150)
print(balance)
OUTPUT
array('i', [300,200,100])
ابحث
باستخدام هذه العملية، يمكنك البحث عن عنصر في مصفوفة بناءً على قيمته. تقبل هذه الطريقة وسيطة واحدة فقط، وهي القيمة. وهي طريقة غير مدمرة، مما يعني أنها لا تؤثر على قيم المصفوفة.
بناء الجملة
arrayName.index(value)
على سبيل المثال:
لنبحث عن القيمة 150 في المصفوفة. حاليًا، تحتوي مصفوفة التوازن لدينا على أربعة عناصر 300 و200 و150 و100. لذا، للبحث عن 150 في المصفوفة، علينا فقط كتابة 150 داخل وسيطة الطريقة. هذا سهل للغاية. تقوم هذه الطريقة بإرجاع فهرس القيمة التي تم البحث عنها.
import array
balance = array.array('i', [300,200,150,100])
print(balance.index(150))
OUTPUT
2
قم
هذه العملية تشبه إلى حد كبير طريقة الإدراج، إلا أنها ستحل محل القيمة الموجودة عند الفهرس المحدد. وهذا يعني ببساطة تعيين قيمة جديدة عند الفهرس المحدد. وتتوقع هذه الطريقة وجود حجتين هما الفهرس والقيمة.
بناء الجملة
arrayName.udpate(index, value)
على سبيل المثال:
لنفترض أن المصفوفة لدينا تحتوي على أربعة عناصر 300 و200 و150 و100، ونريد استبدال 150 بـ 145. إذن ما هو الفهرس 150؟
مشكور لو قلت 2
لكي تقوم باستبدال 150 الذي يحتوي على الفهرس 2، فأنت بحاجة إلى الرجوع إلى الفهرس 2 باستخدام عامل التعيين البسيط، مثل هذا:
import array
balance = array.array('i', [300,200,150,100])
balance[2] = 145
الآن، للتحقق من تحديث القيمة، أدخل اسم المصفوفة واضغط على Enter بلوحة المفاتيح:
import array
balance = array.array('i', [300,200,150,100])
balance[2] = 145
print(balance)
OUTPUT
array('i', [300,200,145,100])
ترافيرس
يمكنك اجتياز مصفوفة بايثون باستخدام حلقات، مثل هذه:
import array
balance = array.array('i', [300,200,100])
for x in balance:
print(x)
OUTPUT
300 200 100
إنشاء مصفوفة في C++
C++ لغة أكثر مرونة من Python عندما يتعلق الأمر بإنشاء المصفوفات. يمكنك إنشاء C++ المصفوفات في ثلاث طرق سبق ذكرها.
يوضح الكود التالي كيفية إنشاء مصفوفة عدد صحيح في C++ لتخزين رصيد الحساب:
#include <iostream>
using namespace std;
int main()
{
int balance[3] = { 300, 200, 100 };
for (int i = 0; i < 3; i++)
{
cout << "value of i: " << balance[i] << endl;
}
return 0;
}
طرق للإعلان عن مصفوفة في C++
يمكنك الإعلان عن مصفوفة في ثلاثة متغيرات بناء الجملة. أيهما يناسب برنامجك؟ يعتمد هذا الاختيار على متطلبات البرنامج الخاص بك.
الإعلان حسب الحجم
بناء الجملة
dataType arrayName[arraySize];
على سبيل المثال:
int balance[3];
عناصر صفيف تهيئة الإعلان فقط
بناء الجملة
dataType arrayName[] = {array, items};
على سبيل المثال:
int balance[] = { 300, 200, 100 };
الإعلان حسب الحجم وعناصر صفيف التهيئة
بناء الجملة
dataType arrayName[arraySize] = {array, items};
على سبيل المثال:
int balance[3] = { 300, 200, 100 };
كيفية الوصول إلى قيمة مجموعة محددة؟
يمكنك الوصول إلى أي عنصر مصفوفة باستخدام الفهرس الخاص به.
بناء الجملة
arrayName[indexNum]
على سبيل المثال:
balance[1]
الصورة التالية توضح المفهوم الأساسي للوصول إلى عناصر المصفوفة حسب فهرسها.
هنا، وصلنا إلى القيمة الثانية للمصفوفة باستخدام فهرسها، وهو 1. سيكون الناتج 200، وهي في الأساس القيمة الثانية للمصفوفة المتوازنة.
#include <iostream>
using namespace std;
int main()
{
int balance[3] = { 300, 200, 100 };
cout << balance[1];
return 0;
}
الناتج
200
مجموعة Operaفي C++
الغاء الاعجاب Python، في C++ يتعين عليك برمجة المنطق بنفسك لإجراء عمليات الإدراج والحذف والبحث والتحديث والعبور على C++ صفائف.
إدراج
إن منطق عملية الإدراج يسير على النحو التالي:
- حلقة من خلال عناصر المصفوفة
- نقلهم إلى مؤشر أكبر
- إضافة عنصر صفيف جديد في فهرس معين
في المثال التالي، لدينا 5 عناصر في مصفوفة التوازن، ونريد إضافة عنصر جديد بعد القيمة 200 مباشرةً. وهذا يعني أنه يتعين علينا نقل جميع العناصر بعد 200 إلى فهرس أكبر، ثم إدراج القيمة الجديدة 150.
#include <iostream>
#include <stdio.h>
main() {
int pos = 2;
int size = 4;
int balance[] = {300,200,100,50,0};
printf("BEFORE INCREMENT: \n");
for(int i = 0; i<5; i++) {
printf("%d\n",balance[i]);
}
/* FOR SHIFTING ITEMS TO A GREATER INDEX */
for(int i = size; i >= pos; i--) {
balance[i+1]=balance[i];
}
/* FOR INSERTING VALUE AT OUR DESIRED INDEX */
balance[pos] = 150;
printf("AFTER INCREMENT: \n");
/* FOR PRINTING THE NEW ARRAY */
for(int i = 0; i<6; i++) {
printf("%d\n",balance[i]);
}
}
الناتج
BEFORE INCREMENT 300 200 100 50 0 AFTERINCREMENT 300 200 150 100 50 0
مجموعة Operaفي Java
يتيح إنشاء البرمجة في Java، في هذا برنامج المصفوفة في Java سنقبل حجم وقيمة عناصر المصفوفة من المستخدم.
import java.util.Scanner;
public class AddElements {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("Enter the size of the array");
int n=sc.nextInt();
int arr[]=new int[n];
System.out.println("Enter Elements in the array");
for(int i=0;i<n;i++)
{
arr[i]=sc.nextInt();
}
System.out.println("Elements in the array");
for(int j=0;j<n;j++)
{
System.out.print(arr[j]+" ");
}
}
}
انتاج:-
Enter the size of the array 5 Enter Elements in the array 1 2 3 4 5 Elements in the array 1 2 3 4 5
تعديل العنصر في المصفوفة:-
قم بتحديث عنصر حسب الفهرس المحدد.
برنامج في Java للتعرف على كيفية تعديل العناصر في المصفوفة
import java.util.Scanner;
public class ModifyElement {
public static void main(String[] args) {
int arr[]={1,2,3,4,5};
int length= arr.length;
Scanner sc=new Scanner(System.in);
System.out.println("Array Elements Before modify");
for(int i=0;i<length;i++)
{
System.out.print(arr[i]+" ");
}
System.out.println("\nEnter the position where you want to change in an array");
int pos=sc.nextInt();
System.out.println("Enter the value");
int val=sc.nextInt();
arr[pos]=val;
System.out.println("Array Elements After modify");
for(int j=0;j<length;j++)
{
System.out.print(arr[j]+" ");
}
}
}
انتاج:-
Array Elements Before modify 1 2 3 4 5 Enter the position where you want to change in an array 2 Enter the value 8 Array Elements After modify 1 2 8 4 5
عنصر الوصول في الصفيف: -
طباعة كافة عناصر المصفوفة.
برنامج في Java لكيفية التنقل في المصفوفة
public class AccessElements {
public static void main(String[] args) {
int arr[]={1,2,3,4,5};
int length= arr.length;
System.out.println("Array Elements are:-");
for(int i=0;i<length;i++)
{
System.out.print(arr[i]+" ");
}
}
}
انتاج:-
Array Elements are:- 1 2 3 4 5
ملخص
- المصفوفة عبارة عن بنية بيانات لتخزين عناصر بيانات متعددة لها نوع بيانات مماثل
- المعرف ونوع البيانات وطول المصفوفة والعناصر والفهرس هي الأجزاء الرئيسية للمصفوفة
- استخدم الفهرس لمعالجة قيم عناصر المصفوفة
- تتمتع المصفوفات بدعم ممتاز للحفاظ على نوع البيانات سليمًا
- في معظم اللغات، يتم إنشاء المصفوفة عن طريق تحديد المعرف ونوع البيانات والعناصر المراد تضمينها
- المصفوفات هي الأفضل لمعالجة عدد كبير من القيم، وللفرز السريع والبحث
- Python يحتوي على وحدات وطرق مدمجة لإجراء عمليات المصفوفة الأساسية مثل الإدراج والحذف والبحث والتحديث والعبور
- C++ يحتاج إلى برامج تعريفية لعمليات المصفوفة الأساسية مثل الإدراج والحذف والبحث والتحديث والعبور
