الگوریتم های جستجو - آموزش الگوریتم جستجوی خطی به زبان PHP

دسته بندی: آموزش
زمان مطالعه: 3 دقیقه
۲۱ اردیبهشت ۱۳۹۷

الگوریتم جستجوی خطی به زبان PHP

الگوریتم جستجوی خطی

در علوم کامپیوتر ، جستجوی خطی یا ترتیبی متدی برای یافتن یک مقدار هدف درون لیست یا آرایه می‌باشد. این الگوریتم تا زمانی که به انتهای لیست یا آرایه نرسیده باشد ، بترتیب هر عنصر را با مقدار هدف بررسی میکند تا مقدار مورد نظر یافت شود. در غیر این صورت ، مقدار هدف در لیست یا آرایه موجود نمی‌باشد. اگر لیست یا آرایه ما n عنصر داشته باشد ، ما احتمالا باید n مقایسه انجام دهیم. همین امر موجب شده این الگوریتم بدترین پیچیدگی اجرایی را داشته باشد و برای آرایه‌ها و لیست‌های بزرگ به هیچ وجه پیشنهاد نمی‌شود. این الگوریتم بسیار کم استفادست.  الگوریتم‌های جستجو مختلف و بهتری وجود دارند که درباره آنها صحبت خواهیم کرد و تفاوت بین آنها را خواهیم گفت.

تشریح با مثال

آرایه ای داریم که شامل عناصر حروف بزرگ الفبای انگلیسی می‌باشد و به ترتیب این عناصر پشت سر هم ، هر کدام در یک خانه از آرایه قرار گرفته اند. قصد داریم عنصری با مقدار J را پیدا کنیم.الگوریتم ما قرار است به شکل زیر عمل کند :

  • از سمت چپ‌ترین خانه آرایه یعنی اندیس صفر شروع به حرکت میکنیم و یک به یک هر عنصر را با مقدار هدف مقایسه میکنیم.
  • اگر عنصر آرایه با مقدار هدف ما برابر بود ، پیغام پیدا شدن میدهیم.
  • اگر مقدار هدف در آرایه وجود نداشت ، -1 را ریترن میکنیم.

ابتدا برای پیمایش آرایه نیاز به حلقه داریم. حلقه ای که استفاده میکنیم foreach خواهد بود. حال درون حلقه شرطی را قرار میدهیم تا در صورتی که عنصر خانه مورد نظر با مقدار هدف ما یکی بود ، پیغام پیدا شدن در اندیس مربوطه را بدهد. در غیر اینصورت مقدار -1 را ریترن میکنیم.

<?php
// برای استفاده بهتر ، الگوریتم را در یک تابع ایجاد کردیم
function linearSearch($arr, $item)
{
// شروع الگوریتم
    foreach ($arr as $index => $alphabet)
        if ($alphabet === $item) echo "$item found in: $index";
    return -1;
// پایان الگوریتم
}

// آرایه ای از حروف بزرگ الفبای انگلیسی
$englsihAlphabets = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
                     'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
                     'W', 'X', 'Y', 'Z'];

// دنبال حرف جی هستیم. برای بهبود ساختار کد آن را داخل متغیر کیس آیتم قرار دادیم
$caseItem = 'J';

// تابع را با پارامترهای مناسب صدا میزنیم
linearSearch($englsihAlphabets, $caseItem);  // output => J found in: 9

چه امتیازی به این مقاله می دید؟
نویسنده افشین
دنیا تو دست کامپیوترهاس و کامپیوترها تو دستای ما برنامه نویسا. خوشحالم که به برنامه نویسی شده مسیر زندگیم. امیدوارم هر روز چیزای جدیدتری و بهتری یاد بگیرم تا با شما به اشتراک بزارم.

نظرات کاربران

اولین دیدگاه این پست رو تو بنویس !

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :