Python Data Structures – Linear Search
يعتبر البحث الخطي أحد أبسط خوارزميات البحث المستخدمة في البرمجة. يعتمد البحث الخطي على فحص كل عنصر في الهيكل البياني واحدًا تلو الآخر حتى يتم العثور على العنصر المطلوب أو حتى يتم استنفاد جميع العناصر. على الرغم من أن البحث الخطي ليس الطريقة الأكثر كفاءة للبحث، إلا أنه يظل مفيدًا في بعض الحالات، خاصة عند التعامل مع هياكل بيانات صغيرة أو غير مرتبة.
كيف يعمل البحث الخطي
العملية الأساسية للبحث الخطي بسيطة للغاية. نبدأ من أول عنصر في القائمة ونتحقق مما إذا كان يطابق العنصر الذي نبحث عنه. إذا كان كذلك، يتم إرجاع موضع العنصر. إذا لم يكن كذلك، ننتقل إلى العنصر التالي في القائمة ونكرر العملية. تستمر هذه العملية حتى نجد العنصر أو حتى يتم الوصول إلى نهاية القائمة دون العثور على العنصر.
إليكم مثال بسيط يوضح كيفية تنفيذ البحث الخطي في لغة بايثون:
def linear_search(data, target):
for index, value in enumerate(data):
if value == target:
return index
return -1
numbers = [3, 5, 2, 4, 9]
target = 4
result = linear_search(numbers, target)
if result != -1:
print(f"Found at index: {result}")
else:
print("Not found")
أداء البحث الخطي
يعتمد أداء البحث الخطي بشكل كبير على حجم القائمة. في أسوأ الحالات، قد يتعين علينا فحص كل عنصر في القائمة، مما يجعل الوقت المستغرق لتنفيذ البحث الخطي هو O(n)، حيث n هو عدد العناصر في القائمة. وهذا يعني أن البحث الخطي يمكن أن يكون بطيئًا عند التعامل مع قوائم كبيرة.
على الرغم من أن البحث الخطي ليس الطريقة الأكثر فعالية، إلا أنه يظل خيارًا جيدًا عندما يكون عدد العناصر قليلًا أو عندما تكون القائمة غير مرتبة ولا يمكن استخدام خوارزميات بحث أكثر تقدمًا مثل البحث الثنائي.
فيما يلي مثال آخر يوضح استخدام البحث الخطي مع قائمة من السلاسل النصية:
def linear_search_strings(data, target):
for index, value in enumerate(data):
if value == target:
return index
return -1
words = ["apple", "banana", "cherry", "date"]
target_word = "cherry"
result = linear_search_strings(words, target_word)
if result != -1:
print(f"Found at index: {result}")
else:
print("Not found")
