هياكل البيانات : المصفوفات (2)
هياكل البيانات : المصفوفات (2)
بسم الله الرحمن الرحيم
في المقال السابق هنا قمت بذكر الجزء الأول من المصفوفات والذي يحتوي على ماهية المصفوفة، كيفية حجزها في الذاكرة، وخوارزميتي البحث والحذف، وفي هذا المقال بإذن الله سوف أكمل خوارزمية الإضافة وبعض التنبيهات.
_ بعض الخوارزميات المتعلقة بالمصفوفة:
3 ـ الإضافة لمصفوفة غير مرتبة:
//Unsorted Array insert Algorithm
// input: array, size of array, count, key
1. IF count = size:
2. PRINT “Array is full!” AND Exist
3. ELSE:
4. A[ count ] = key
5. Count++
6. RETURN count
شرح الخوارزمية:
عندما نقوم بإضافة عنصر إلى المصفوفة يجب أن نتأكد أولا أنه يوجد مكان فارغ لهذا العنصر، لأنه كما ذكرنا سابقا أن المصفوفة حجمها لا يتغير أثناء التشغيل بل يجب تعيين الحجم المتوقع من البداية، فهذا بالنسبة للسطر الأول، وعند توفر مكان فارغ نقوم بإضافة العنصر عند الكاونت والذي ذكرنا أنه أول مكان فارغ في المصفوفة، وهذه الصورة توضح المفهوم:
4 ـ الإضافة لمصفوفة مرتبة:
//Sorted Array insert Algorithm
// input: array, size of array, count, key
1. IF count = size:
2. PRINT “Array is full!” AND Exist
3. ELSE:
4. LOOP i = 0 UNTIL last element index
5. IF key is less/larger than A[ i ]
6. LOOP j = count UNTIL i + 1 // shift out
7. A[ j ] = A[ j - 1]
8. BREAK
9. A[ i ] = key
10. Count++
11. RETURN count
شرح الخوارزمية:
رقم 1 و 2 نفس السابق للتأكد من وجود مكان فارغ، رقم 4 نقوم بعمل لوب يمشي على جميع عناصر المصفوفة بشكل مرتب، وأثناء ذلك يقوم بمقارنة العنصر الذي يريد إضافته بجميع العناصر إذا وجد عنصر يحقق الشرط – أصغر من أو أكبر – عندها يقوم بعمل لوب آخر يبدأ من عند الكاونت وهو أول مكان فارغ في المصفوفة ويبدأ بإزاحة العناصر – أي من رقم إندكس أصغر إلى أكبر – إلى أن يصل للمكان الذي يضيف فيه يعمل بريك ويضيف العنصر،وتسمى هذه العملية بالشفت آوت، والصورة التالية ربما توضح المفهوم أكثر:
: java.util.Arrays class
نظرا لأن المصفوفات مهمة جداً ، فالجافا وفرّت لنا العديد من الدوال " الميثودز" الجاهزة لاستعمالها، سوف أذكر منها ثلاث فقط:
1- مقارنة مصفوفتين ببعضهما:
وذلك باستخدام هذه الدالة Arrays..equals( A,B) ,وتقوم بإرجاع قيمة true or false على حسب عناصر المصفوفة.
|
2- ترتيب المصفوقة على حسب عناصرها:
أي لو كانت العناصر أرقاما فسترتبها تصاعديا، ولو أحرفا فسترتبها أبجديا وهكذا، وذلك باستخدام : Arrays.sort(A)
" :String3- تحويل المصفوفة إلى نص "
وذلك باسخدام: Arrays.toString(A)
وهذا مثال في الجافا يوضح طريقتها:
int A[] = { 1,2,3,4,5,7};
int B[] = { 2,3,4,1,6,7};
System.out.println(Arrays.equals(A, B));
System.out.println(Arrays.toString(B));
Arrays.sort(B);
System.out.println(Arrays.toString(B));
وهذه هي مخرجات الكود:
هذا ما تيسر ذكره بالنسبة للمصفوفات، أرجو أن يكون واضحا مفهوما، والحمد لله
والسلام عليكم ورحمة الله .
عرض المزيد.. جديد مقالاتي
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !