در این جلسه تیم کدگیت را با آموزش جستجوی خطی در سی پلاس پلاس همراهی کنید. ابتدای این آموزش جستجوی خطی را معرفی و سپس آن را در زبان سی پلاس پلاس پیاده سازی خواهیم کرد. همچنین پیش نیاز این آموزش شامل موارد زیر است:
جستجوی خطی
یکی از الگوریتم هایی که برای جستجوی یک سری داده وجود دارد جستجوی ترتیبی یا جستجوی خطی است. این الگوریتم کلیه عناصر درون یک لیست را یکی یکی بررسی میکند تا آرگومان جستجو پیدا شود.
این الگورتم جزو ساده ترین الگوریتمهای جستجو میباشد. که حالت خاصی از جستجوی جامع میباشد(ویکیپدیا).
جستجوی خطی در سی پلاس پلاس
برای پیاده سازی جستجوی خطی در سی پلاس پلاس ما یک تابع مینویسیم. این تابع سه ورودی میگیرد اولین ورودی آرایه ما و دومین ورودی طول آرایه ما است. آخرین ورودی نیز عددی است که به دنبال آن هستیم. در ادامه ما کل آرایه را به ترتیب میگردیم تا بتوانیم عنصری که میخواهیم را پیدا کنیم. کد جستجوی خطی به صورت زیر است:
int LinearSearch(int data[], int len, int key) {
int i;
for (i = 0; i < len; i++)
if (data[i] == key)
return i;
return -1;
}
همانطور که در کد جستجوی خطی در سی پلاس پلاس میبینید ما متدی به نام LinearSearch نوشتیم این متد سه ورودی data و len و key را دارد.خروجی متد اندیس خانه ای است که key در آن قرار دارد. این خانه در آرایه Data است اگر در آرایه وجود نداشت اندیس را -1 قرار میدهیم و return میکنیم.
تست برنامه جستجوی خطی در سی پلاس پلاس
برای تست کدهای بالا، کد main زیر را بزنید:
int main() {
int data[] = { 5, 4, 8, 22, 56, 32, 24 };
int index = LinearSearch(data, 7, 32);
if (index >= 0) {
cout << "index of key " << index << endl;
} else {
cout << "key not found in array" << endl;
}
return 0;
}
در کد بالا ما یک آرایه data و یک key برای پیدا کردن در آرایه data ساختیم. سپس متد linearsearch را صدا زدیم و خروجی این متد را در یک متغیر به نام index ریختیم. در آخر نیز این اندیس را چاپ کردیم.
تشكر
سلام اگه بخوایم متغیری از ورودی بگیرم باید کجا کد cin اضافه کنم؟
سلام. باید در قسمت main متغیر data رو از ورودی بگیرید.
سلام اگر این جست و جو رو برای کاراکتر بخوایم نبویسیم چطور میشه
سلام. برای جست جوی یک رشته درون یک متن از الگوریتم های دیگری مثل Rabin–Karp یا … استفاده می شود.