Linear Search Algorithm https://4.top4top.net/p_1235dil6k1.jpg Linear Search Algorithm ================== البيانات غالبا تخزن فى شكل تتابعى مثل المصفوفات. لذلك فأن ابسط طريقة للبحث داخل مصفوفة هى مقارنة معلومة ما بجميع عناصر المصفوفة بداية من اولها حتى اخر عنصر فيها. هذه الطريقة تسمى البحث الخطى Linear Search. فى البحث الخطى (لا اعرف ان كانت الترجمة صحيحة ام لا) يتم مقارنة مفتاح البحث Search Key (الهدف المقصود البحث عنه) بكل عنصر فى المصفوفة. البحث الخطى يبدأ دائما بأول subscript فى المصفوفة و يقارنه بـمفتاح البحث المدخل من قبل المستخدم فاذا وجده يساوى لقيـــمة مفتاح البحث فأن دالة البحث تُرجع مكان هذا المفتاح فى المصفوفة. مثال: اذا ادخل المستخدم قيمة 17 للبحث عنها داخل المصفوفة , فإن البرنامج يبدأ هكذا ,,,, مقارنة مفتاح البحث بــ Index رقم 0 فى المصفوفة يُرجع رقم 0 ( هذا هو مكان مفتاح البحث) و اذا لم يجده ينتقل على Index رقم 1 فاذا وجده يٌرجع قيمة واحد و اذا لم يجده ينتقل الى Index رقم 2 و هكذا حتى يجد هدفه فى المصفوفة . https://4.top4top.net/p_12353263o1.jpg هذا هو مخطط flowchart لعمل الدالة linearsearch كود الدالة linearsearch =cpp> كود: //Linear Search Function int linearsearch(int a[],int key,int size) //search function { for (int i=0; i < size; i++) //loop to pass over all data in the array to find the sear ch key { if (a[i] == key) return i; //return position of search key } return -1; //return -1 to tell the user that search key isn't found } هذه دالة Function اسميناها linearsearch و لها ثلاث parameters و هما مصفوفة للبحث داخله ثم قيمة مفتاح البحث ثم حجم المصفوفة . بعدها انشاءنا loop حلقة دوارة لتدور على كل بيانات المصفوفة و تقارنها بمفتاح البحث . فاذا وجدت احد subscripts داخل المصفوفة مساوِ لقيمة مفتاح البحث فأنها تُرجع قيمة هذا subscript و اذا لم تجده ترجع -1 )لا يجوز ان ترجع هذه الدالة صفر 0 لأن اول عنصر فى المصفوفة index الخاص به = 0) نأتى الان الى كود الدالة الرئيسية فى برنامجنا و هى الدالة التى لا نستطيع الاستغناء عنها : كود: D main( ) السطر 6: قمنا بتعريف function prototype ليستخدمها المترجم فى تعريف الدالة السطر9: تعريف ثابت قيمته = حجم المصفوفة السطر 10: تعريف المصفوفة و حجمها يساوى حجم الثابت SIZE السطر 13 --< 16: تعريف حلقة دوارة loop لملئ المصفوفة ببعض البيانات (للتجربة) السطر 19: تعريف متغير element ليحمل القيمة التى ترجعها دالة البحث linearsearch السطر 20 --< 26 : جملة If للتأكد من القيمة التى ترجعها الدالة اذا كانت -1 فهذا يعنى ان مفتاح البحث لم يتم العثور عليه اذا كانت i (قيمة Index الذى يحتوى على مفتاح البحث) يتم عرض قيمته على الشاشة ================================= الى هنا انتهى الشرح .... ارجو ان اكون قد وفقنى الله فى عرض هذه الخوارزمية. اى استفسارات يرجى وضعها و مناقشتها معا مع خبراء C++ فى هذا المنتدى الرائع. ملحوظة: كود البرنامج كاملا مرفق. السلام عليكم و رحمة الله و بركاته تعديل : اعادة رفع المرفقات=cpp> Linear Search.rar |
الساعة الآن 01:31 PM. |
Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
شات الشلة
Powered by: vBulletin Copyright ©2000 - 2006, Jelsoft Enterprises Ltd.
جميع الحقوق محفوظة لعيون العرب
2003 - 2011