--- title: Linear Search localeTitle: بحث خطي --- ## بحث خطي لنفترض أنك حصلت على قائمة أو مجموعة من العناصر. أنت تبحث عن عنصر معين. كيف تفعل ذلك؟ ابحث عن الرقم 13 في القائمة المحددة. ![بحث خطي 1](https://i.imgur.com/ThkzYEV.jpg) أنت تنظر فقط إلى القائمة وهناك! ![بحث خطي 2](https://i.imgur.com/K7HfCly.jpg) الآن ، كيف تخبر كمبيوتر للعثور عليه. لا يمكن للكمبيوتر النظر إلى أكثر من قيمة في نفس الوقت. لذلك يأخذ عنصر واحد من الصفيف والتحقق مما إذا كان هو نفسه ما كنت أبحث عنه. ![بحث خطي 3](https://i.imgur.com/ZOSxeZD.jpg) العنصر الأول لم يتطابق. لذلك انتقل إلى المرحلة التالية. الوقت ![بحث خطي 4](https://i.imgur.com/SwKsPxD.jpg) وما إلى ذلك وهلم جرا… يتم ذلك حتى يتم العثور على تطابق أو حتى يتم التحقق من كافة العناصر. ![بحث خطي 5](https://i.imgur.com/3AaViff.jpg) في هذه الخوارزمية ، يمكنك التوقف عند العثور على العنصر ، ومن ثم لن تكون هناك حاجة للنظر إلى أبعد من ذلك. ما هي المدة التي تستغرقها عملية البحث الخطي؟ في أفضل الأحوال ، يمكن أن تحصل على الحظ والعنصر الذي تبحث عنه ربما في الموضع الأول في الصفيف! ولكن في أسوأ الحالات ، يجب عليك النظر في كل عنصر قبل أن تجد العنصر في المكان الأخير أو قبل أن تدرك أن العنصر ليس في الصفيف. ومن ثم يكون التعقيد في البحث الخطي هو: O (n). إذا كان العنصر المراد البحث عنه يترأس في أول كتلة ذاكرة ، فإن التعقيد سيكون: O (1). يظهر رمز وظيفة البحث الخطي في JavaScript أدناه. هذه الدالة تقوم بإرجاع موضع العنصر الذي نبحث عنه في المصفوفة. إذا كان العنصر غير موجود في الصفيف ، ستقوم الدالة بإرجاع فارغة. ### مثال في Javascript `function linearSearch(arr, item) { // Go through all the elements of arr to look for item. for (var i = 0; i < arr.length; i++) { if (arr[i] === item) { // Found it! return i; } } // Item not found in the array. return null; } ` ### مثال في روبي `def linear_search(target, array) counter = 0 while counter < array.length if array[counter] == target return counter else counter += 1 end end return nil end ` ### مثال في C ++ `int linear_search(int arr[],int n,int num) { for(int i=0;i