آموزش زبان برنامه نویسی سی پلاس پلاس

سی پلاس پلاسدر بخش ششم از سری آموزش زبان برنامه نویسی سی پلاس پلاس ، قصد داریم مبحث جست و جو در آرایه ها را مورد بررسی قرار دهیم.برای اینکه بتوانیم برنامه های کامل تر و بهتری با استفاده از آرایه ها در زبان سی پلاس پلاس بنویسیم، نیاز داریم که بیشتر با این زبان برنامه نویسی آشنا شویم.برای مشاهده این مبحث به ادامه مطلب بروید.

آموزش زبان برنامه نویسی سی پلاس پلاس

بخش ششم

جستوجوی خطی

جستجوی خطی، ساده ترین نوع جستجو است که در آرایه های نامرتب استفاده می شود. در این روش داده مورد نظر به ترتیب با تک تک عناصر آرایه مقایسه می شود تا مکان آن پیدا شود. تابع زیر پیاده سازی این جستجو را نشان می دهد:

 

int  linearSearch(int  A[], int n, int x) {

    int i;

    for  (i=0; i<n; i++)

        if (x == A[i] )  return(i);

    return(-1) ;

}

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

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

میخواهیم برنامه ای بنویسیم که در یک آرایه به جست و جوی یک عنصر مشخص میپردازد و شماره جایگاه آن عنصر را به عنوان خروجی برگرداند.

#include<iostream.h>
#include<conio.h>
int lineralsearch(int a[],int n,int x){
for(int i=0;i<n;i++)
if(a[i]==x)
return i;
return(-1);
}
void main(){
int arr[20];
int n,x;
cout<<"please enter the number of the numbers:"<<endl;
cin>>n;
cout<<"please enter the numbers:"<<endl;
for(int i=0;i<n;i++)
cin>>arr[i];
cout<<"please enter the number wich you are looking for:"<<endl;
cin>>x;
int a=lineralsearch(arr,n,x);
if(a!=-1)
cout<<"the place of this number is"<<a;
else
cout<<"the number does not exist in this array"<<endl;
getch();
}

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

 برای کسب اطلاعات بیشتر درباره زبان برنامه نویسی سی پلاس پلاس می توانید به cplusplus و  tutorialspoint مراجعه نمایید.