ملاحظة مهمة: المثال التالي استخدامه خيالي و غير قابل للتطبيق مع الأسف الشديد (هبدته من عندي بصيغة أخرى)
عندك ليست 123456 رح تدوري إذا الرقم 2 موجود بالليست
بتروحي للرقم الموجود بمنتصف الليست مو مهم شو هو 123456 بحالتنا هون أخذنا 4
نعمل مقارنتين:
هل 4 يساوي 2 غلط
هل 4 أصغر من 2 غلط
معناها 4 لا هو العدد الي بندور عليه و أكبر من 2 كمان، و معناه أيضًا العدد الي بندور عليه لو موجود بيكون بالنصف الأول من الليست (النصف الأصغر من 4)
ناخد النصف الأول من الليست 123 و نعمل نفس العملية، ناخد الرقم الي بالمنتصف
نعمل مقارنتين:
هل 2 يساوي 2 خلص لقينا العدد موجود خلصنا
هل 2 أصغر من 2 (هي المقارنة ما رح تصير أساسًا)
بس نحنا بناخد أسوء حالة لما بيكون الرقم 2 مو موجود بالليست هي شو رح يصير،
رح نضل نقسم الليست ع إثنين حتى يصير عنا ليستات من element واحد بس و نعمل مقارنة أخيرة و يطلع الرقم مش موجود كمان
نرجع ع المثال تبع الصورة، 20^2 هو عدد ال elements بالليست تبعك
بأسوء حالة (عدم وجود ال element المرجو) رح تحتاجي 20 مرة و أنتِ تقسمي الليست تبعك نصين لحتى يصير معك 20^2 ليستس من element واحد بس، و هي أسوء حالة الي كنا بنحكي عنها، لهيك بيصير معك بأسوء تقدير عشرين iterations
و عدد ال operations هو 2×40 لأنك بتعملي مقارنتين بكل iteration وحدة
شرحك حقيقي رهيب ثانك يو
استوعبت المقصود و اللي ما كانش داخل مخي أكثر اشي عن ليش تدبلت و صارت أربعين عجقتني فكرت الها علاقة بال first و ال last اللي بنعملهم عشان نتبع عال array
و سوري لاني غلبتك معاي
بس رحت اسأل و ملقيتش حد فقلت استغل الفرصة واسألك