الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

binarysrarch

بدأه medxx_ في 13 مايو 2014 · 2 رد · 688 مشاهدة · في الأخبار والنقاشات التقنية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله  :blush:


 


أنا اول سمستر أدرس فيه برمجة .. 


 


وواجهني سؤال ماعرفت إجابته .. بخصوص الباينري سيرش :(


 


 


wkE4hD.png


 


 


أحتاج شرح للاكواد ذي وايش الفايدة منها X_x


 


ضروري  :(

post-284033-0-94981100-1399983355_thumb.

#2

هذي الدالة لخوارزمية البحث الثنائي binary search، فكرتها أنه إذا كان عندك مصفوفة مرتبة كالتالي:
 

[ 12  15  30  35  40  69  98 100 499 698 992 1004 ]

وتريدين البحث عن مكان عنصر في المصفوفة، فلا حاجة للمرور على كل العناصر، يمكنك المقارنة بين العنصر في الوسط (موقعه طول المصفوفة / 2 صحيح بدون فواصل)، المقارنة ستعطي ثلاث احتمالات:

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

مع كل دوره ستصغر دائرة البحث للنصف إلى أن تجدين العنصر أو يكون العنصر غير موجود أساساً.

 

البداية = 0
النهاية = 11

الوسط = (البداية + النهاية) ÷ 2 = 5

   0   1   2   3   4   5   6   7   8   9  10   11
[ 12  15  30  35  40  69  98 100 499 698 992 1004 ]
                      ^
                    15 اصغر
البداية = 0
النهاية = الوسط السابق = 5

الوسط = (البداية + النهاية) ÷ 2 = 2

   0   1   2   3   4   5   6   7   8   9  10   11
[ 12  15  30  35  40  *************************** ]
          ^
        15 اصغر
البداية = 0
النهاية = الوسط السابق = 2

الوسط = (البداية + النهاية) ÷ 2 = 1

   0   1   2   3   4   5   6   7   8   9  10   11
[ 12  15  *************************************** ]
       ^
 مساوي، وجدنا العنصر عند 1

تم تعديل هذه المشاركة بواسطة Mr.B في 14 مايو 2014 في 00:10

1
#3

يعطيك العافيه فهمتت عليك :D