عند العمل مع المصفوفات في البرمجة ، غالبا ما تنشأ المهمة لإيجاد عنصر قريب من الحجم إلى رقم معين. في هذه المقالة ، سننظر في كيفية تنفيذ مثل هذا البحث بلغة برمجة بايثون. يمكن أن يكون هذا مفيدا ، على سبيل المثال ، عند حل مشكلات التحسين أو البحث عن أقرب قيمة في صفيف.
تتمثل إحدى طرق حل هذه المشكلة في استخدام حلقة ومقارنة كل عنصر من عناصر المصفوفة برقم معين بالتتابع. في هذه الحالة ، سنقارن معامل الفرق بين عناصر المصفوفة ورقم معين لإيجاد أصغر فرق. Этот подход может быть применен для любого типа элементов массива, поддерживающих операцию вычитания и модуль числа.
closest = number
- closest_diff = diff
- print(closest) # Выведет 9
- في هذا المثال ، نقوم بتهيئة المتغيرات الأقرب والأقرب_الصندوق مع القيمة لا شيء-هذا يشير إلى أنه في البداية ليس لدينا حتى الآن أقرب العناصر الموجودة. ثم نكرر من خلال عناصر المصفوفة ونجد الفرق بين كل عنصر ورقم معين. إذا كان الفرق أقل من الأقرب أو الأقرب لم يتم تحديده بعد (يساوي لا شيء) ، نقوم بتحديث قيم الأقرب والأقرب.
- بعد الانتهاء من الحلقة ، نحصل على القيمة الأقرب ، والتي ستحتوي على عنصر صفيف قريب من الحجم إلى الرقم المحدد. يعمل هذا الحل في الوقت الخطي ، أي أن سرعته تتناسب مع حجم المصفوفة. بالنسبة للمصفوفات الكبيرة ، قد يكون هذا غير فعال ، وفي مثل هذه الحالات ، يمكن تطبيق خوارزميات أكثر تعقيدا لتحسين عملية البحث.
- ابحث عن عنصر في المصفوفة قريب من هذا الرقم
- خوارزمية الحل
- تنفيذ بايثون
- المهام والفرص
مزايا الخوارزمية
تقدير تعقيد الخوارزمية
أمثلة الاستخدام
- مثال 1:
- المثال 2:
- المثال 3:
- المثال 4:
- سؤال وجواب
كيف يمكنني العثور على العنصر الذي هو قريب في حجم لعدد معين في صفيف في بيثون?
ما هي الخوارزمية الأكثر كفاءة في الاستخدام للعثور على عنصر قريب من الحجم إلى رقم معين في مصفوفة بايثون?
ابحث عن عنصر في المصفوفة قريب من هذا الرقم
عند العمل مع صفائف الأرقام ، قد تنشأ المهمة للعثور على العنصر الأقرب في الحجم إلى رقم معين. في مثل هذه الحالات ، غالبا ما تساعدنا خوارزمية العثور على الحد الأدنى من الاختلاف.
لحل هذه المشكلة ، يمكنك استخدام الخوارزمية التالية:
حدد العنصر الأول من المصفوفة واعتبره أقل اختلاف عن الرقم المحدد.
عرض بقية عناصر المصفوفة.
إذا تم العثور على عنصر يختلف عن الرقم المحدد أقل من العنصر الحالي الأقل اختلافا ، فقم بتحديث العنصر الأصغر الحالي.
كرر الخطوات من 2 إلى 3 لجميع عناصر المصفوفة.
اطبع أصغر عنصر حالي.
قد يبدو تنفيذ الخوارزمية في بايثون كما يلي:
العثور على مواطن_أقرب_الرقم (آر ، الهدف):
الأقرب = أر [0]
فرق = القيمة المطلقة (الهدف-آر [0])
للاسطوانات في آر:
الحالي_مهرجان دبي السينمائي الدولي = القيمة المطلقة (الهدف-الأسطوانات)
إذا كان الحالي_مهرجان دبي السينمائي الدولي:
فرق = الحالي_مهرجان دبي السينمائي الدولي
الأقرب = الأسطوانات
العودة الأقرب
- في هذا المثال ، تقبل دالة العثور على أقرب رقم صفيف آر ورقم مستهدف محدد كمدخل. نتيجة لذلك ، تقوم الدالة بإرجاع عنصر المصفوفة الأقل اختلافا عن الرقم المحدد.
- مثال على استخدام الوظيفة:
- صفيف = [1, 2, 3, 4, 5]
- رقم الهدف = 3.6
- أقرب رقم = العثور على أقرب رقم (صفيف ، رقم الهدف)
- طباعة (أقرب رقم) # المخرجات 4
في هذه الحالة ، نبحث عن عنصر المصفوفة الأقرب إلى الرقم 3.6. الأقرب هو الرقم 4 ، لذلك سيتم عرضه على الشاشة.
وبالتالي ، باستخدام الخوارزمية لإيجاد الحد الأدنى من الاختلاف ، يمكنك بسهولة العثور على عنصر في المصفوفة قريب من الحجم إلى رقم معين في لغة برمجة بايثون.
خوارزمية الحل
للعثور على عنصر في المصفوفة قريب الحجم من رقم معين ، يمكنك استخدام الخوارزمية التالية:
قم بتهيئة المتغير بأصغر فرق بقيمة أكبر من أقصى فرق ممكن.
تهيئة متغير مع مؤشر العنصر مع أصغر قيمة الفرق يساوي 0.
انتقل من خلال جميع عناصر المصفوفة وقم بتنفيذ الإجراءات التالية لكل عنصر:
حساب الفرق بين العنصر الحالي وعدد معين مودولو.
إذا كان الفرق الحالي أقل من أصغر الفرق ، فقم بتحديث قيم أصغر الفرق وفهرس العنصر.
إرجاع عنصر صفيف مع الفهرس الموجود.
تنفيذ بايثون
هذه الوظيفة
الهدف
(الرقم الذي نبحث عنه أقرب قيمة). في المتغير
مين_مهرجان دبي السينمائي الدولي
سنقوم بتخزين الحد الأدنى للفرق بين عناصر الصفيف والرقم المستهدف ، وفي المتغير الأقرب
- أقرب قيمة.
ثم نذهب من خلال كل عنصر من عناصر المصفوفة وحساب الفرق بين العنصر الحالي والرقم المستهدف. إذا كان هذا الاختلاف أقل من الحد الأدنى الحالي للفرق ، فقم بتحديث القيم
مين_مهرجان دبي السينمائي الدولي
و
أقرب رقم,
- على التوالي.
- في نهاية الدورة ، نعيد أقرب رقم تم العثور عليه. التعقيد الزمني لهذه الخوارزمية هو ا (ن) ، أين ن هو عدد العناصر في المصفوفة.
- مثال على استخدام الوظيفة:
- آر = [2, 5, 8, 10, 15]
الهدف = 9
أقرب رقم = العثور على أقرب رقم(أر ، الهدف)
طباعة (و " أقرب رقم إلى {الهدف}: {أقرب رقم}")
- في هذا المثال ، ستكون النتيجة هي الرقم 8 ، لأنه الأقرب إلى الرقم 9 بين جميع عناصر المصفوفة.
- المهام والفرص
- في مهام برمجة بايثون المتعلقة بإيجاد عنصر في صفيف قريب الحجم من رقم معين ، يجدر النظر في عدة جوانب مهمة:
- تحديد القرب: باستخدام المفهوم الرياضي لـ" القرب " ، من الضروري وضع معايير لتحديد مدى اختلاف عناصر المصفوفة عن رقم معين. قد يكون هذا هو الفرق بين القيم أو معامل المسافة أو مقياس آخر.
خوارزمية البحث: هناك العديد من الخوارزميات التي يمكن استخدامها لحل هذه المشكلة. على سبيل المثال ، خوارزمية لفرز جميع عناصر المصفوفة ومقارنتها برقم معين ، وخوارزمية بحث ثنائية ، وما إلى ذلك. كل من هذه الخوارزميات لها خصائصها وقابليتها للتطبيق.
التعامل مع الأخطاء المحتملة: عند العمل مع المصفوفات ، من الضروري توفير إمكانية حدوث أخطاء ، مثل العناصر المفقودة في المصفوفة ، والبيانات غير الصحيحة ، وما إلى ذلك. من الضروري مراقبة مثل هذه المواقف والتعامل معها من أجل منع فشل البرنامج.
تحسين الأداء: إذا كانت المصفوفة تحتوي على عدد كبير من العناصر ، فقد يكون من الضروري تحسين أداء خوارزمية البحث. قد يشمل ذلك اختيار الخوارزمية المثلى ، أو استخدام هياكل البيانات المناسبة ، أو تطبيق تعدد مؤشرات الترابط والتوازي.
يمكن أن تنشأ مهام البحث عن عنصر في صفيف قريب الحجم من رقم معين في العديد من المجالات ، مثل تحليل البيانات والتعلم الآلي وتحسين الخوارزمية وغيرها. سيساعد فهم المهام والفرص الرئيسية في هذا المجال في إيجاد الحلول وتطوير حلول برمجية فعالة.
- مزايا الخوارزمية
- تحتوي خوارزمية العثور على عنصر قريب من الحجم إلى رقم معين في صفيف على عدد من المزايا:
- سرعة التشغيل السريعة: يتم تنفيذ الخوارزمية باستخدام نهج فعال ، والذي يسمح لك بالبحث عن عنصر بأقل وقت ممكن.
تعدد الاستخدامات: الخوارزمية قابلة للتطبيق للبحث عن أقرب عنصر في مصفوفة من أي حجم وأي نوع من البيانات (أعداد صحيحة ، أرقام كسرية ، سلاسل ، إلخ.).
سهولة الاستخدام: تحتوي الخوارزمية على منطق تشغيل واضح ولا تتطلب تكوينا معقدا أو موارد إضافية لتنفيذها.
- المرونة: يمكن تعديل الخوارزمية بسهولة وتكييفها مع متطلبات أو ميزات محددة للمهمة.
- نتيجة لذلك ، يتيح لك استخدام خوارزمية للبحث عن عنصر قريب من الحجم إلى رقم معين في المصفوفة حل المشكلات المتعلقة بإيجاد القيمة الأنسب بكفاءة ومرونة عالية.
تقدير تعقيد الخوارزمية
عندما نحل مشكلة العثور على عنصر في مصفوفة قريبة من الحجم إلى رقم معين ، فإن أحد الجوانب المهمة هو تقييم مدى تعقيد الخوارزمية. هذا يسمح لك بتحديد كفاءة وسرعة حل المشكلة.
طرق البحث-قد يكون خوارزميات مختلفة تعقيد مختلفة. على سبيل المثال ، البحث الثنائي له تعقيد لوغاريتمي ، والبحث البسيط عن العناصر له تعقيد خطي.
هياكل البيانات-يمكن أن يؤثر استخدام هياكل بيانات مختلفة على أداء الخوارزمية. على سبيل المثال ، يمكن أن يؤدي استخدام مصفوفة مرتبة إلى تسريع البحث.
عادة ما يتم تقدير تعقيد الخوارزمية من خلال حجم التدوين (المهندس. تدوين يا كبير). س-تدوين يسمح لك لتقدير الحد الأعلى من تعقيد الخوارزمية وتحديد الكيفية التي سوف تنمو مع زيادة حجم البيانات المدخلات.
في حالة البحث عن مكافئ في مصفوفة قريبة من الحجم إلى رقم معين ، فإن تقديرات التعقيد التالية ممكنة:
التعقيد الخطي س (ن) - تتكرر الخوارزمية من خلال جميع عناصر المصفوفة بالترتيب حتى يتم العثور على رقم قريب. في أسوأ الحالات ، سيكون عليك المرور عبر المصفوفة بأكملها.
التعقيد اللوغاريتمي س (سجل ن) - تقسم خوارزمية البحث الثنائي المصفوفة إلى نصفين وتقارن الرقم المطلوب مع منتصف المصفوفة. تتكرر العملية حتى يتم العثور على رقم قريب.
يعد اختيار الخوارزمية وتقييم تعقيدها أمرا مهما للحل الأمثل لمشكلة البحث عن عنصر في مصفوفة. هذا يسمح لك أن تأخذ في الاعتبار تفاصيل بيانات الإدخال وضمان فعالية البرنامج.
أمثلة الاستخدام
من أجل الوضوح ، لنلق نظرة على أمثلة لاستخدام الوظيفة
العثور على_أقرب_الرقم
.
مثال 1:
لنفترض أن لدينا مجموعة الأرقام التالية:
[1, 4, 7, 9, 12]
وعلينا إيجاد العنصر الأقرب إلى الرقم 6. يمكننا استدعاء الوظيفة على النحو التالي:
العثور على_أقرب_الرقم([1, 4, 7, 9, 12], 6)
ستكون النتيجة المتوقعة هي الرقم 7 ، لأنه الأقرب إلى 6 في هذه المصفوفة.
المثال 2:
لنفترض أن لدينا مجموعة الأرقام التالية:
[2, 5, 8, 11, 14]
ونريد إيجاد العنصر الأقرب إلى الرقم 10. في هذه الحالة ، يمكنك استدعاء الوظيفة على النحو التالي:
العثور على_أقرب_الرقم([2, 5, 8, 11, 14], 10)
ستكون النتيجة المتوقعة هي الرقم 11 ، لأنه الأقرب إلى 10 في هذه المصفوفة.
المثال 3:
لنأخذ مثالا آخر مع مجموعة من الأرقام:
العثور على_أقرب_الرقم([3, 6, 9, 12, 15], 8)
ستكون النتيجة المتوقعة هي الرقم 9 ، لأنه الأقرب إلى 8 في هذه المصفوفة.
المثال 4:
تخيل موقفا لدينا فيه مجموعة الأرقام التالية:
[0, 5, 10, 15, 20]
وعلينا إيجاد العنصر الأقرب إلى العدد 17. للعثور على مثل هذا العنصر ، نحتاج إلى استدعاء الوظيفة على النحو التالي: