هياكل البيانات : المصفوفات (1)

hadeel.hمنذ 8 سنوات

هياكل البيانات : المصفوفات (1)

بسم الله الرحمن الرحيم

* ما هي الـمصفوفة؟

هي عبارة عن طريقة لتخزين البيانات من نوع واحد، ذات حجم محدد يتم تحديده من بداية تكوين الـمصفوفة.

*من أنواع المصفوفات:

- المصفوفة ذات البُعد الواحد.

1D array.png

- طريقة تعريف مصفوفة ذات بعد واحد:

في الجافا يتم تعريف المصفوفة بتحديد نوع البيانات التي ستقوم بتخزينها، وبعد ذلك تقوم بتحديد اسم المصفوفة والذي ستتعامل معه فيما بعد، وأخيرًا تضع رمز المصفوفة وهو [ ].

- مثال في الجافا:


int  a[] = {1 , 2, 3, 4, 5};
char b[] = {'a', 'b'};

- تكوين المصفوفة وحجز مكانها في الذاكرة:

المصفوفة يتم حجزها في الذاكرة بطريقة متسلسلة، فمثلا إن قمت بتحديد حجم المصفوفة    بـ 6 بايت سوف يقوم بحجز 6 بايت في الذاكرة متسلسلة، ولكن إن كنت تريد حجز مصفوفة بحجم 10 بايت وذاكرتك لا يوجد فيها مساحة بحجم 10 متسلسلة، فإذا لن تستطيع تكوين هذه المصفوفة.

وهذه الصورة توضح هذا المفهوم.

array in memory.png

_ بعض الخوارزميات المتعلقة بالمصفوفة:

arrayInfo.png

- هذه الصورة توضح ما سنحتاجه للتعامل مع البيانات المدخلة والمخرجة من المصفوفة –

1 ـ البحث عن عنصر معين داخل المصفوفة:


// Array Search Algorithm 
// input: array, size of array, count, key

LOOP I = first element index UNTIL last element index
              IF current element = key:
                       RETURN current index
RETURN -1

شرح الخوارزمية:

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

أما المخرجات فستكون عبارة عن رقم صحيح، في حالة وجود العنصر سوف تقوم الميثود بإرجاع رقم الإندكس الخاص في العنصر، وأما إذا لم تجد العنصر فسوف يرجع -1 .

أيضاً هناك ما يجب الانتباه له عند كتابة الخوارزميات وهي الحالات الحرجة أو الخاصة، في حالة المصفوفات لدينا حالتين فقط:

الأولى: أن تكون المصفوفة فارغة وهذا إذا كان الكاونت يساوي صفر.

الثانية: أن تكون المصفوفة ممتلئة وهذا إذا كان الكاونت يساوي الحجم.

 

2 ـ حذف عنصر باستخدام قيمته لكلا من المصفوفات المرتبة والغير مرتبة:


// Array Delete Algorithm
// input: array, size of array, count, key

1.	IF count = 0 :
2.	   PRINT “ Array is  empty” AND Exit
3.	ELSE continue to step 2.
4.	i = Search( array, count, size, key)
5.	IF i = -1 :
6.	   PRINT “ Not found “ AND Exit
7.	ELSE // shift in
8.	   LOOP j = i UNTIL before last element index:
9.	        A[ j ] = A[ j+1 ]
10.	   Count - -
11.	RETURN count

شرح الخوارزمية:

نبدأ من البداية، رقم 1و 2 نختبر إذا كانت المصفوفة فارغة فماذا سنحذف أساسا، رقم 4 نقوم بمناداة ميثود البحث السابقة والتي كانت ترجع لنا قيمة عدد صحيح، ومن ثم نقوم باختبار هذا الرقم، رقم 7 إلى 9 هذه عملية شرحها في الصورة التالية وهي عندما تجد العنصر الذي تريد حذفه، رقم 10 نغير مكان الكاونت والذي يعتبر أول مكان فارغ في المصفوفة، وأخيراً نقوم بإرجاع القيمة لاستخدامها لاحقا.

ArrayDelete.png

 

أخيرا وليس آخرا، هذا ما استطعت كتابته لليوم، سوف أكمل بإذن الله ثلاث خوارزميات أخرى تخص المصفوفات قريباً.

والسلام عليكم ورحمة الله.

كلمات دليلية:
2
إعجاب
14494
مشاهدات
0
مشاركة
0
متابع
متميز
محتوى رهيب

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !