جستجو در آرایه ها:

در جستجوی دو دویی یک لیست مرتب شده دنبال عنصر های خاصی می گردیم فرض کنیم آرایه a بصورت مرتب شده وجود داشته باشد و می خواهیم محل عنصر xرا در آرایه  پیدا کنیم .mid محل عنصر را مشخص می کند .xرا از a[mid]  کوچکتر باشد نتیجه می گیریم که عنصر xدر نیمه اول آرایه وجود دارد و یا اگر xاز a[min]بزرگتر باشد در نیمه دوم آرایه موجود می باشد به همین  ترتیب در نیمه های اول بدست آمده عنصر وسط را مشخص می کنیم وبا x مقایسه می کنیم این عملیات را تکرار می کنیم تا در نهایت محل عنصر پیدا شده.

مثال:

فرض کنید در آرایه ای 100 عدد بصورت مرتب وجود داشته باشد ،برنامه ای بنویسید که عدد x را گرفته و محل آن در آرایه با جسجوی دودویی بدست آورد.

Void main (){

Int a [100]={…}, high =99,low=o, mid,found =o,x;

Cin>>x;

While (low <=high &&! Found ){

Mid =(low+ high )12

If (a[low]= = x)found =1;

Else if (a[mind]>x)high =mind -1;

Else low =mid +1;

}

If (found ) cout <<mid

Else cout<<-1;

}

آرایه دو بعدی :

;[ستون]        [ سطر ]      نام آرایه      نوع آرایه

مثال  1:

برنامه ای بنویسید که دو ماتریس 12×10 را دریافت کند و حاصل جمعشان را محاسبه و چاپ کند .

Void main (){

Int  a [10][12],b[10][12],i,j,c[10][12]={0};

For (i =o;i<10;i++)

For (j=o;j<12;j++) {

Cin >>a[i][j]>>b[i][j];

C[i][j]=a[i][j]+b[i][j];

}

For (i=o;i<10;i++) {

For (j=o;j<12;j++)

Cout << “it”<<c[i][j]

Cout<<ende;

}

}

مثال 2 :

برنامه ای بنویسید که یک ماتریس 8×8 را دریافت کند و ترانهاده آنرا بدون استفاده از ماتریس کمکی چاپ کند .

Void main (){

Int a [8][8],i,j;

For (i=o;i<8;i++)

For (j=o,j<8;j++)

Cin >>a[i][j];

For (i=o;i<8;i++)

For (j=o;j<i;j++){

T=a[i][j];a[i][j]=a[j][i];a[j][i]=t;

}

}

دیدگاه ها بسته شده است