اكثر المحتويات زيارة
الدوال في الاكسل (5,030 مشاهده)
ربط قاعدة بيانات أكسس (MS Access) مع برنامج الفيجوال بيسك بطريقة(ODBC) (3,437 مشاهده)
الدرس الثالث : بعض تطبيقات الدوال في اكسل (2,561 مشاهده)
تعريف الاستعلام وطريقة عرضه في آكسس، أنواع الاستعلامات، نافذة تحديد الاستعلام! (1,974 مشاهده)
الدرس الثاني: بعض الحيل لتسهيل برنامج اكسل (1,839 مشاهده)
شرح طريقة استعمال الأوتلوك مع بريد الهوتميل (1,744 مشاهده)
تغيير لغة واجهة التطبيق من عربي الى انجليزي وبالعكس لـ Windows-based applications (1,728 مشاهده)
أنواع العلاقات وطريقة الربط بين الجداول. (1,640 مشاهده)
مقدمة عامة حول الاكسل وحيل خاصة بالاكسل (1,453 مشاهده)
الدرس الأول : عمل شريحة في البوربوينت (1,381 مشاهده)
أنشئ قاعدة بياناتك التي ستستند إليها في تعلم طريقة ربط الجداول والاستعلامات. (1,381 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس . (1,242 مشاهده)
كيفية حل مشاكل الانترنت اكسبلور Internet Explorer (1,203 مشاهده)
اضافه صوت ونص لخلفيه في باور بوينت (1,161 مشاهده)
شرح طريقة التجميع Grouping في برنامج الاكسل (1,119 مشاهده)
درس تعريب المجلة (1,108 مشاهده)
برنامج Windows Movie Maker لتكوين أفلام (1,099 مشاهده)
التعرف على مكونات الكمبيوتر (1,096 مشاهده)
مقدمة في ربط قواعد البيانات داخل بيئة الـ .NET باستخدام الـ VB.NET (1,052 مشاهده)
دروس في الأوفيس الأكسس - Access0- (985 مشاهده)
كيف تجعل برنامجك أكثر تألقا وجمالا باستخدام أداة Active Skin (974 مشاهده)
مقدمة عن لغة البيسك (932 مشاهده)
ما هو المات لاب MATLAB؟ (929 مشاهده)
الفيجوال بيسك - مقدمة (896 مشاهده)
نبذه عن الفيجوال بيسك (828 مشاهده)
الجديد
التحويل التلقائي للحروف ل- ل- ه إلى اسم الجلالة0---- (537 مشاهده)
النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0---النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0--- (311 مشاهده)
ضبط خيارات اللغة فى الـ Microsoft Word0--- (340 مشاهده)
استخدام لوحة المفاتيح في الـ Word0---- (478 مشاهده)
إضافة كلمة سر إلي ملفات الورد دون استخدام برامج0--- (435 مشاهده)
دمج المراسلات0-- (219 مشاهده)
وضع صورة كخلفية للنص0-- (322 مشاهده)
السماح للمستخدمين بتعديل أجزاء من ملف وورد محمي (Word2003)0--- (240 مشاهده)
كتابة الأرقام الكسرية ورموز المعادلات0-- (385 مشاهده)
درس كامل عن الدمج السهل من لوحة المفاتيح ف0-ي برنامج الـ Word (300 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس .0--- (821 مشاهده)
دورة الأكسيس : الدرس الرابع : العلاقات0---- (491 مشاهده)
أساسيات في Access0--0 (320 مشاهده)
تصميم تقرير لطباعة البيانات0---- (368 مشاهده)
تصميم نموذج استعراض البيانات‏0--تصميم نموذج استعراض البيانات‏0-- (351 مشاهده)
تصميم نموذج إدخال‎ ‎البيانات0--- (372 مشاهده)
إنشاء قوائم خاصة باستخدام الماكرو(1)0-- (322 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (2)0-- (260 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (1)0- (258 مشاهده)
استعلامات SQL في Access - تعديل الجداول وإضافة الحقول0- (324 مشاهده)
استعلامات SQL في Access - تحديث البيانات الجدولية0-- (287 مشاهده)
الاستعلامات الإجرائية -4 (استعلام الحذف)0--- (159 مشاهده)
الاستعلامات الإجرائية -2 (استعلام الإلحاق)0--- (185 مشاهده)
تصميم تقرير لطباعة الإجمالي0--- (230 مشاهده)
استعلامات التحديد Select Query مع أمثله (1)0--- (292 مشاهده)
البحث

من هنا وهناك
قريبا باذن الله
قريبا باذن الله
قريبا باذن الله
قريبا باذن الله
قريبا باذن الله
البحث الثنائي (1) Binary Search

بسم الله الرحمن الرحيم



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



طريقة البحث الثنائي Binary Search:



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



ولكي نطبق أحد خوارزميات الـBinary Search على مصفوفة ما نتبع الخطوات البسيطة التالية:





  1. الخطوة الأولى والأهم والتي لا يمكن تطبيق الـBinary Search لولاها هي:
    ترتيب المصفوفة تصاعدياً أو تنازلياً أو أبجدياً على حسب نوع البيانات المخزنة فيها!


  2. تحديد أول عنصر في المصفوفة ولنسمه i، وآخر عنصر فيها ولنسمه مثلاً j.

  3. تحديد العنصر الذي يقع في منتصف هذه المصفوفة ولنسمه k.


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



خوارزم البحث الثنائي الأول  First Binary Search Algorithm:



تقوم فكرة البحث الثنائي على تقسيم المصفوفة إلى نصفين واستبعاد النصف الذي لا ينتمي إليه المفتاح key الذي نبحث عنه، كيف ذلك؟
عن طريق تحديد العنصر الذي يقع في منتصف هذه المصفوفة، ثم نقارن هذا العنصر مع المفتاح الذي نبحث عنه كالتالي (تذكر أن مصفوفتنا مرتبة تصاعدياً أو تنازلياً):







  1. إذا كان يساويه نكون قد وجدنا العنصر الذي نبحث عنه.





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





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





  4. بعد ذلك: نعتبر النصف الذي حددنا لأنفسنا البحث فيه مصفوفة قائمة بحد ذاتها، نحدد فيها الـi, j, & k (أي نقوم بتقسيمها إلى قسمين) ونطبق نفس الخطوات من 1 إلى 3 فيها، ثم نقارن المفتاح مع العنصر الأوسط الجديد، بنفس الترتيب الذي ذكر في الخطوات 1 إلى3 السابقة.



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



Array[]={0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28}



-تابع في هذا الفلاش التسلسل في البحث عن عناصر مختلفة:





والسؤال الآن: كيف نكتب code يمثل هذا الخوارزم بالسي أو الجافا؟!
وللإجابة على هذا السؤال  سيصادفنا تساؤل آخر: كيف نرتب المصفوفة تصاعدياً او تنازلياً؟!
والإجابة:
لترتيب المصفوفة فهناك عدة خوارزميات للترتيب منها مثلاً: (Bubble sort, sorting by Selection, sorting by Insertion, Shell sort, & Quick sort).
ولا مجال لذكرها الآن، حيث سنعتمد في الـcode على ترتيبنا نحن للمصفوفة بشكل صحيح.



والآن، لنستعرض معاً code يطبق تكنيك binary search على مصفوفة ذات عناصر رقمية بلغة السي:



 



#include "STRING.h"
#include "STDIO.h"
#define max_size 15

//-------------------------------
int binary_search (key)
int key;
{
int NumArray[]={0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28};

int i=0, j=max_size-1, k=(i+j)/2;
while(i
if (key = NumArray[k]){
printf("\nwe found the key (%i) ", key);
return k;
}
else{
if (key < NumArray[k]){
j=k;
k=(i+j)/2;
}
if (key > NumArray[k]){
i=k;
k=(i+j)/2;
}
}
}
return -1;
}
//--------------------------------
void main()
{
int result;
int key;
printf("\n\nPlz. Enter the Key to begin search\nKey=");
scanf("%i",key);
result = binary_search(key);
if (result==-1){
printf("\nthe key(%i) is not found",key); }
getch();
}



أرجو أن يكون هذا المثال البسيط جداً واضحاً.



عدد مرات البحث في أي مصفوفة عن عنصر محدد باستخدام الـBinary Search:



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



ففي مثالنا: استخدمنا مصفوفة من 15 عنصر، نلاحظ ان العدد الذي يزيد على عدد عناصر المصفوفة بواحد، أي العدد 16 ينتج من القوة الرابعة لرقم2 (2^4=16) وذلك يعني اننا نحتاج على الأكثر لأربع مرات مقارنة في الـBinary Search حتى نجد العنصر الذي نبحث عنه! فمن الممكن أن نجده من أول مرة في المقارنة، ومن الممكن أن نجده في ثاني مرة، أو ثالث مرة أو رابع مرة.. أو أن يكون غير موجود في المصفوفة!



وفي مثال آخر: لو بحثنا في مصفوفة تحوي 1024 عنصر، سنحتاج إلى 10 مرات للمقارنة كحد أقصى، ونعرف ذلك بتكرار قسمة عدد العناصر على رقم 2 إلى أن نصل إلى العدد واحد في خارج القسمة (وسبب ذلك هو أننا بعد كل مقارنة نقوم بإلغاء نصف عناصر المصفوفة من الاعتبار)، فبتكرار قسمة 1024 على رقم 2 نحصل على القيم التالية على الترتيب: 512، 256، 128، 64، 32، 16، 8، 4، 2، ورقم 1. نلاحظ أن العدد 1024 (2^10) قسم على رقم 2 عشر مرات حتى حصلنا على العدد 1.
نستنتج من ذلك، أن القسمة على اثنين تقابل مرة واحدة من المقارنة في الـBinary Search Algorithm. فمصفوفة بـ 1048576 (2^20) عنصر تستلزم على الأكثر 20 مرة من المقارنة حتى نجد العنصر الذي نبحث عنه، ومصفوفة تحوي بليون عنصر، تستلزم على الأكثر إلى 30 مرة من المقارنة حتى نجد العنصر المطلوب فيها!



ترى، كم يوفر لنا هذا التكنيك من الوقت في البحث؟.. فقط 30 مرة من البحث بين بليون عنصر لنجد ضالتنا!!.. إنه تكنيك عبقري فعلاً



تابعنا في الدرس الثاني كي تتعرف على الخوارزم الثاني للـBinary Search



 

البحث الثنائي (1) Binary Search

أضف هذه المادة في موقعك:
مواد مشابهة:
أول مشروع بلغة الـ ++C أول مشروع بلغة الـ ++C
أول مشروع بلغة الـ ++C
(مرات المشاهدة: 137 مرات)
التكرار do...while-- التكرار do...while--
التكرار do...while--
(مرات المشاهدة: 163 مرات)
المؤشرات في سي المؤشرات في سي "Pointers In C
المؤشرات في سي "Pointers In C
(مرات المشاهدة: 197 مرات)
مراحل البرنامج- مراحل البرنامج-
مراحل البرنامج-
(مرات المشاهدة: 62 مرات)
التعليقات التعليقات
التعليقات
(مرات المشاهدة: 54 مرات)
الهيكل العام للبرنامج الهيكل العام للبرنامج
الهيكل العام للبرنامج
(مرات المشاهدة: 49 مرات)
البحث المتتالي- البحث المتتالي-
البحث المتتالي-
(مرات المشاهدة: 130 مرات)
كيفية تنصيب Turbo C++ وتشغيل برنامج بلغة السي عليه! كيفية تنصيب Turbo C++ وتشغيل برنامج بلغة السي عليه!
كيفية تنصيب Turbo C++ وتشغيل برنامج بلغة السي عليه!
(مرات المشاهدة: 298 مرات)
تدوير المصفوفة المتناثرة [ Sparse Matrix(2 تدوير المصفوفة المتناثرة [ Sparse Matrix(2
تدوير المصفوفة المتناثرة [ Sparse Matrix(2
(مرات المشاهدة: 103 مرات)
المترجم المترجم
المترجم
(مرات المشاهدة: 116 مرات)
تعارف اهداءات ترحيب تبريك الحوار العام الفسحة العامة الطلاب و الاختبارات و الاسئله الجريمه حوادث كوارث جرائم معجم لهجات الفاظ مصطلحات عبارات حكم المنتدى الاسلامى تفسير الاحلام dreams صوتيات اسلاميه اناشيد محاضرات خطب وعظ الخينة الرمضانية اللغة الانجليزيه English الطرائف والمرح والفكاهه والتسليه العاب اكس بوكس بلاستيشن XBOX360 & PS3 playstation بلاي استيشن دريم كاست نتندو Anime انمي افلام كرتون السياحة و السفر والرحلات الافلام المنوعه افلام عربيه افلام اجنبيه الصور المضحكه والتعليق مسابقات الغاز حكاوي تطوير المواقع و السكربتات Ajax XML CSS JavaScript PHP Perl CGI seo Search Engine web2 تطوير و صيانة المنتديات vBulletin مشاكل و حلول للمنتديات و المواقع المشكله و الحل و الصيانة الهاكات برودكت بلقن Product - Plugins استايلات قوالب واجهاتstyle - template حراج انترنت مستعمل + جديد اشهار مواقع تبادل اعلانات بيع و شراء منتديات ستلايت فضائيات قنوات ترددات كامات شفرات مفاتيح شيرنج Sharing كروت ساتلايت و الرسيفرات الشعر العام البوح بالخافي فصحى نبطي الخاطرة الأدبية خواطر منوعه قصص روايات الكمبيوتر الحاسب والاجهزة العام البرامج الكاملة وشروحها وتعريب البرامج البرامج العربية والمعربة البرامج المشروحة و شروحات البرامج فوتوشوب photoshop رسم تصميم فلاتر فرش تدرجات خطوط باترن اشكال جوال بلوتوث جميع اجهزة الجوال mobile bluetooth بوكيت بي سي Pocket PC اجهزة كفية بلوتوث bluetooth فلاش سويتش سويش ماكس FLASH _ SWiSH الهكرز و الاختراق حماية فيروسات اختراق كراك hacker crack virus حواء للبنات نسائي للحريم فقط والبنوتات المطبخ للطبخ والاكل وكل امور المطابخ تطوير الذات و البرمجة اللغوية العصبية عيادة طبية للفلوق وغيرها صحه وعلاج health طقها والحقها الرياضي رياضه عربيه منوعه رياضه اجنبيه دوري اسباني وايطالي وغيره قنص صيد رحلات برية بحرية سيارات دراجات نارية تفحيط ترهيم
جميع الحقوق محفوظة مدرسة المشاغبين منتديات مدرسة المشاغبين  Copyright © All rights reserved sitemap