البحث الخطي في المصفوفات



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

السلام عليكم ورحمة الله وبركاته


البحث الخطي:
تعتمد طريقة البحث الخطي على مقارنة كل عنصر من عناصر المصفوفة مع القيمة التي يراد البحث عنها.
تعمل طريقة البحث الخطي بشكل جيد مع المصفوفات الصغيرة الحجم او المصفوفات الغير مفرزة.ولكن مع المصفوفات الكبيرة
لا تعمل بشكل جيد.


طيب نأخذ مثاال

  1. //Linear Search of an Array
  2.  
  3. #include <iostream>
  4.  
  5. using namespace std;
  6. int linear (int[],int,int);
  7.  
  8. int main()
  9. {
  10. const int arraySize=100;
  11. int a[arraySize], searchkey, elemnt;
  12.  
  13.  
  14. for (int i=0; i<arraySize;i++)
  15. a[i]= 2 * i;
  16.  
  17. cout<<'Enter Intergr search key:'<<endl;
  18. cin>>searchkey;
  19. elemnt=linear(a, searchkey,arraySize);
  20. if(elemnt != -1)
  21. cout<<'Found value in elemnt'<<endl<<elemnt<<endl;
  22. else
  23. cout<<'Value not found'<<endl;
  24. system('pause');
  25. return 0;
  26. }
  27.  
  28. int linear(int array[],int key,int size)
  29. {
  30. for (int n=0;n <size;n++)
  31. if (array[n]==key)
  32. return n;
  33. return -1;
  34. }



هذا مثال لعملية بحث داخل مصفوفة
  1. int linear (int[],int,int);


الجزء الرأسي لتابع لو نلاحظ هنا طريقة تعريفة بأنة سوف يستقبل مصفوفة ...


  1. int a[arraySize], searchkey, elemnt;

searchkey يستخدم لحفظ الرقم الذي يراد البحث عنة

elemnt وهو الذي يقووم بأستدعاء الدالة البحث وارجاع ترتيب الرقم المراد البحث عنة داخل المصفوفة.


  1. for (int i=0; i<arraySize;i++)
  2. a[i]= 2 * i;

هنا يتم اعطاء قيم لعناصر المصفوفة



  1. elemnt=linear(a, searchkey,arraySize);

هنا تم استدعاء الدالة وتمرير المصفوفة a
وحجمها arraySize
والرقم المراد البحث عنة searchkey


والان نذهب الى دالة linear
  1.  
  2. int linear(int array[],int key,int size)
  3. {
  4. for (int n=0;n <size;n++)
  5. if (array[n]==key)
  6. return n;
  7. return -1;
  8. }


array ==المصفوفة a
key == searchkey
size==arraySize

وطريقة البحث تتم باستخدام ال for

اتوقع الباقي واضح :-)



تمت طباعة الدرس من موقع مكتبة الدروس
http://qt-ar.org/lessons/show29.html