الگوریتم جستجوی خطی (Linear Search)
در این بخش الگوریتم جستجوی خطی (Linear Search) را با یک مثال ساده بررسی خواهیم کرد. این الگوریتم جزء ساده ترین الگوریتم های جستجو و کم استفاده برای جستجو در مجموعه از داده ها است.
مسئله
با توجه به آرایه داده شده (arr[]) تابعی بنویسید که عنصر x را در آرایه جستجو کند.
مثال
1 2 3 4 5 6 7 8 | Input : arr[] = {10, 20, 80, 30, 60, 50,110, 100, 130, 170} x = 110; Output : 6 Element x is present at index 6 Input : arr[] = {10, 20, 80, 30, 60, 50,110, 100, 130, 170} x = 175; Output : -1 Element x is not present in arr[]. |
حل
یک راه ساده برای حل این مسئله استفاده از الگوریتم جستجوی خطی یا همان linear search است.
- از سمت چپ ترین عنصر آرایه شروع کنید و هر یک از عناصر را با مقدار x مقایسه کنید.
- اگر مقدار x با یکی از عناصر آرایه مطابقت داشته باشد، اندیس آن عنصر را باز گردانید.
- اگر مقدار x با هیچ یک از مقادیر آرایه مطابقت نداشته باشد، مقدار -1 را باز گردانید.
مثال
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | // C++ code to linearly search x in arr[]. If x // is present then return its location, otherwise // return -1 #include <iostream> using namespace std; int search(int arr[], int n, int x) { int i; for (i = 0; i < n; i++) if (arr[i] == x) return i; return -1; } int main(void) { int arr[] = { 2, 3, 4, 10, 40 }; int x = 10; int n = sizeof(arr) / sizeof(arr[0]); int result = search(arr, n, x); (result == -1)? cout<<"Element is not present in array" : cout<<"Element is present at index " <<result; return 0; } |
خروجی:
1 | Element is present at index 3 |
پیچیدگی زمانی الگوریتم جستجوی خطی برابر با O(n) است. این الگوریتم عملا زیاد مورد استفاده قرار نمی گیرد. زیرا الگوریتم هایی مانند الگوریتم جستجوی باینری (binary search) و یا hash tables در مقایسه با این الگوریتم خیلی سریع تر عمل می کنند.
هیچ نظری ثبت نشده است