الانتقال إلى المحتوى الرئيسي

كيفية كتابة برنامج للبحث عن رقم في صفيف

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

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

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

  1. خوارزمية للبحث عن رقم في صفيف
  2. باستخدام البحث الخطي
  3. باستخدام البحث الثنائي
  4. موازاة البحث عن رقم في صفيف
  5. سؤال وجواب
  6. كيف يمكنني كتابة برنامج للبحث عن رقم في صفيف?
  7. ما هي لغات البرمجة المناسبة لكتابة برنامج للبحث عن رقم في مصفوفة?
  8. هل هناك طريقة أكثر فعالية للعثور على رقم في صفيف?

خوارزمية للبحث عن رقم في صفيف

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

  1. البحث الخطي
  2. البحث الخطي هو خوارزمية بسيطة تتكرر بالتسلسل عبر جميع عناصر المصفوفة ، وتقارن كل عنصر برقم مستهدف ، حتى يتم العثور على العنصر المطلوب أو ينتهي التكرار.

    خوارزمية البحث الخطي:

    1. تهيئة متغير للرقم المستهدف.
    2. انتقل من خلال كل عنصر من عناصر المصفوفة.
      • إذا كان العنصر الحالي يساوي الرقم المستهدف ، فسيتم العثور على الرقم ، قم بتنفيذ الإجراءات المناسبة.
    3. إذا انتهى البحث ولم يتم الوصول إلى الهدف ، لم يتم العثور على الرقم ، قم بتنفيذ الإجراءات المناسبة.

مثال على رمز بايثون تنفيذ خوارزمية بحث خطية:

البحث الخطي (آر ، الهدف):

لأني في النطاق (لين (آر)):

إذا أر[أنا] == الهدف:

عودة أنا # إرجاع فهرس الرقم الذي تم العثور عليه

عودة -1 # لم يتم العثور على الرقم

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

في الممارسة العملية ، غالبا ما يتم استخدام خوارزميات أكثر كفاءة ، مثل البحث الثنائي أو التجزئة ، والتي تسمح لك بتسريع البحث عن رقم في مصفوفة.

باستخدام البحث الخطي

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

يمكن وصف خوارزمية بحث المصفوفة الخطية على النحو التالي:

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

إذا لم يتم العثور على الرقم المطلوب في المصفوفة ، فإننا نعيد قيمة خاصة (على سبيل المثال ، -1) للإشارة إلى عدم وجود الرقم المطلوب.

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

مثال على تنفيذ البحث الخطي في لغة برمجة بايثون:

البحث الخطي (آر ، الهدف):

لأني في النطاق (لين (آر)):

إذا أر[أنا] == الهدف:

عودة أنا

عودة -1

# مثال الاستخدام

صفيف = [5, 3, 8, 2, 1, 9]

رقم الهدف = 2

النتيجة = البحث الخطي(صفيف ، رقم الهدف)

إذا كانت النتيجة != -1:

طباعة ("تم العثور على الرقم المطلوب في المصفوفة في الموضع" ، النتيجة)

آخر:

طباعة ("لم يتم العثور على الرقم المطلوب في المصفوفة")

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

عند استخدام البحث الخطي ، من الضروري مراعاة حدوده والتعامل مع اختيار خوارزمية البحث اعتمادا على المهمة المحددة والبيانات التي تعمل معها.

باستخدام البحث الثنائي

البحث الثنائي هو خوارزمية للبحث عن عنصر في مصفوفة مرتبة بتقسيمه إلى جزأين ومقارنة العنصر المطلوب بالمتوسط.

لاستخدام البحث الثنائي ، من الضروري أن يتم ترتيب العناصر الموجودة في المصفوفة بترتيب تصاعدي أو تنازلي.

مثال على خوارزمية البحث الثنائية:

  1. قم بتعيين القيم الأولية للمتغيرات اليمنى واليسرى (الحدود اليسرى واليمنى للمصفوفة).
  2. طالما أن قيمة المتغير الأيسر أقل من أو تساوي قيمة المتغير الأيمن ، فاتبع الخطوات التالية:
    • تعيين المتغير الأوسط كمؤشر متوسط بين اليسار واليمين.
    • إذا كانت قيمة العنصر مع الفهرس الأوسط تساوي العنصر المطلوب ، فقم بعرض رسالة حول العنصر الموجود وإيقاف الخوارزمية.
    • إذا كانت قيمة العنصر مع منتصف الفهرس أكبر من العنصر المطلوب ، فقم بتعيين المتغير من اليمين إلى الوسط — 1 (قم بتحويل الحد الأيمن إلى اليسار).
    • إذا كانت قيمة العنصر مع الفهرس الأوسط أقل من العنصر المطلوب ، فقم بتعيين المتغير الأيسر إلى الوسط + 1 (قم بتحويل الحد الأيسر إلى اليمين).
  3. إذا أصبحت قيمة المتغير الأيسر أكبر من قيمة المتغير الأيمن ، فقم بعرض رسالة تفيد بعدم العثور على العنصر المطلوب.

ميزة البحث الثنائي هي كفاءته. وقت تنفيذ خوارزمية البحث الثنائي هو ا (سجل ن) ، أين ن هو عدد العناصر في المصفوفة.

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

موازاة البحث عن رقم في صفيف

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

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

خطوات لموازاة البحث عن رقم في صفيف:

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

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

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

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

سؤال وجواب

كيف يمكنني كتابة برنامج للبحث عن رقم في صفيف?

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

ما هي لغات البرمجة المناسبة لكتابة برنامج للبحث عن رقم في مصفوفة?

جميع لغات البرمجة تقريبا مناسبة لكتابة برنامج للبحث عن رقم في مصفوفة. على سبيل المثال ، يمكنك استخدام لغات البرمجة ج ، ج++ ، جافا ، بيثون ، جافا سكريبت وغيرها الكثير. من المهم أن تختار لغة البرمجة التي كنت معتادا والتي كنت البرمجة مريحة.

هل هناك طريقة أكثر فعالية للعثور على رقم في صفيف?

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