English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

nu

ضيف
1 / ?
العودة إلى الدروس

التحقق واحداً تلو الآخر

البحث الخطي: تحقق من كل واحد

تخيل أن لديك 10 بطاقات مقلوبة، مرقمة من 1 إلى 10، مخلوطة بترتيب عشوائي.

تريد إيجاد البطاقة التي تحمل الرقم 7.

تقلب البطاقات واحدة تلو الأخرى، من اليسار إلى اليمين، حتى تجدها.

البحث الخطي مقابل البحث الثنائي: التحقق من كل بطاقة مقابل القفز إلى المنتصف

السيناريوعدد القلبات
أفضل حالة1 قلبة (محظوظ من المحاولة الأولى!)
أسوأ حالة10 قلبات (كانت آخر بطاقة)
المتوسطحوالي 5 قلبات

الآن تخيل 100 بطاقة. المتوسط: حوالي 50 قلبة.

1000 بطاقة؟ المتوسط: حوالي 500 قلبة.

هل ترى النمط؟ ضاعف البطاقات، ضاعف العمل. ينمو العمل في خط مستقيم.

يسميه خبراء الحاسوب البحث الخطي — خطي يعني أن العمل ينمو مثل الخط: ثابت و متوقع.

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

كم من الأسماء؟

لديك قائمة فصل بـ 20 اسماً مكتوباً بترتيب عشوائي.

تحتاج إلى إيجاد الاسم Zoe.

تتحقق من الأسماء واحداً تلو الآخر، من أعلى القائمة إلى الأسفل.

باستخدام البحث الخطي على قائمة من 20 اسماً للعثور على 'Zoe': كم عدد الفحوصات في أفضل حالة؟ وفي أسوأ حالة؟ وما هو متوسط معقول؟ اشرح كل واحدة.

قطع القائمة إلى النصف

البحث الثنائي: القفز إلى المنتصف

البحث الثنائي له قاعدة واحدة: يجب أن تكون القائمة مرتبة أولاً.

إذا كانت قائمتك المكونة من 20 اسماً تذهب من A إلى Z، يمكنك استخدام البحث الثنائي.

كيف يعمل: افتح في الاسم الأوسط (الاسم #10). اسأل: هل يأتي Zoe قبل أم بعد هذا الاسم؟

Z يأتي بالقرب من نهاية الأبجدية، لذا يأتي Zoe بعد المنتصف. تخلص من النصف الأول. الآن لديك فقط الأسماء 11-20 المتبقية.

تحقق من منتصف هذه الأسماء العشرة (الاسم #15). Z يأتي بعد M، لذا Zoe يأتي بعد الاسم #15. تخلص من الأسماء 11-14. الآن لديك الأسماء 16-20.

استمر في القطع إلى النصف. كل فحص يزيل نصف الأسماء المتبقية.

حجم القائمةالحد الأقصى للفحوصات مع البحث الثنائي
20 اسماًعلى الأقل 5 فحوصات
1000 اسمعلى الأقل 10 فحوصات
1,000,000 اسمعلى الأقل 20 فحص

قارن ذلك مع البحث الخطي على 1,000,000 اسم: متوسط 500,000 فحص.

يقطع البحث الثنائي القائمة إلى النصف في كل مرة. القطع إلى النصف مراراً يصل إلى 1 بسرعة — لهذا يبقى سريعاً جداً.

ابحث عن 'fig' في قائمة مرتبة

إليك قائمة مرتبة من 8 كلمات:

1. apple 2. banana 3. cherry 4. date 5. elderberry 6. fig 7. grape 8. honeydew

تريد إيجاد fig باستخدام البحث الثنائي.

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

امشِ في خطوات البحث الثنائي للعثور على 'fig'. ماذا تتحقق أولاً، ثم بعد ذلك، حتى تجدها؟ كم عدد الفحوصات؟

تبديل الجيران ليصبحوا مرتبين

فرز الفقاعة: قارن الجيران وبدّلهم

فرز الفقاعة: كل مرة تبدل الجيران غير المرتبين، مما ينقل الأكبر إلى النهاية

يرتب فرز الفقاعة القائمة بمقارنة عنصرين متجاورين في كل مرة.

إذا كان الجاران غير مرتبين — بدّلهما.

استمر في عمل جولات عبر القائمة حتى لا يحتاج شيء إلى تبديل.

مثال: رتّب [5, 3, 8, 1]

الجولة 1:

- قارن 5 و 3. 5 > 3، لذا بدّل → [3, 5, 8, 1]

- قارن 5 و 8. 5 < 8، لا تبديل → [3, 5, 8, 1]

- قارن 8 و 1. 8 > 1، لذا بدّل → [3, 5, 1, 8]

الجولة 2:

- قارن 3 و 5. حسناً → [3, 5, 1, 8]

- قارن 5 و 1. 5 > 1، بدّل → [3, 1, 5, 8]

- قارن 5 و 8. حسناً → [3, 1, 5, 8]

الجولة 3:

- قارن 3 و 1. 3 > 1، بدّل → [1, 3, 5, 8]

- قارن 3 و 5. حسناً. قارن 5 و 8. حسناً.

انتهى! [1, 3, 5, 8]

لاحظ: أكبر رقم يطفو إلى نهاية القائمة في كل جولة. بهذه الطريقة حصل فرز الفقاعة على اسمه.

يعمل فرز الفقاعة. إنه ليس الأسرع للقوائم الكبيرة، لكنه سهل الفهم — مثالي للتعلم.

رتّب [4, 2, 7, 1] بفرز الفقاعة

رتّب هذه القائمة باستخدام فرز الفقاعة: [4, 2, 7, 1]

أظهر القائمة بعد كل جولة كاملة. احسب كم جولة يستغرق الانتهاء.

رتّب [4, 2, 7, 1] باستخدام فرز الفقاعة. أظهر القائمة بعد كل جولة كاملة، وأخبرني كم جولة يستغرقها ذلك.