
الگوریتم جستجوی خطی
در علوم کامپیوتر ، جستجوی خطی یا ترتیبی متدی برای یافتن یک مقدار هدف درون لیست یا آرایه میباشد. این الگوریتم تا زمانی که به انتهای لیست یا آرایه نرسیده باشد ، بترتیب هر عنصر را با مقدار هدف بررسی میکند تا مقدار مورد نظر یافت شود. در غیر این صورت ، مقدار هدف در لیست یا آرایه موجود نمیباشد. اگر لیست یا آرایه ما n عنصر داشته باشد ، ما احتمالا باید n مقایسه انجام دهیم. همین امر موجب شده این الگوریتم بدترین پیچیدگی اجرایی را داشته باشد و برای آرایهها و لیستهای بزرگ به هیچ وجه پیشنهاد نمیشود. این الگوریتم بسیار کم استفادست. الگوریتمهای جستجو مختلف و بهتری وجود دارند که درباره آنها صحبت خواهیم کرد و تفاوت بین آنها را خواهیم گفت.
تشریح با مثال
آرایه ای داریم که شامل عناصر حروف بزرگ الفبای انگلیسی میباشد و به ترتیب این عناصر پشت سر هم ، هر کدام در یک خانه از آرایه قرار گرفته اند. قصد داریم عنصری با مقدار J را پیدا کنیم.الگوریتم ما قرار است به شکل زیر عمل کند :
- از سمت چپترین خانه آرایه یعنی اندیس صفر شروع به حرکت میکنیم و یک به یک هر عنصر را با مقدار هدف مقایسه میکنیم.
- اگر عنصر آرایه با مقدار هدف ما برابر بود ، پیغام پیدا شدن میدهیم.
- اگر مقدار هدف در آرایه وجود نداشت ، -۱ را ریترن میکنیم.
ابتدا برای پیمایش آرایه نیاز به حلقه داریم. حلقه ای که استفاده میکنیم foreach خواهد بود. حال درون حلقه شرطی را قرار میدهیم تا در صورتی که عنصر خانه مورد نظر با مقدار هدف ما یکی بود ، پیغام پیدا شدن در اندیس مربوطه را بدهد. در غیر اینصورت مقدار -۱ را ریترن میکنیم.
$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