سلام درساتونو خوندین دیگه. امتحانتونم که خوب دادین.
آرایه ها و رشته ها:
تعریف آرایه: مجموعه ای از متغیرهای یک نوع هست که توسط یه نام مشترک به اونا اشاره می شه. وقتی یه ارایه رو ذخیره می کنیم تمام خونه های اون پشت سر هم در حافظه قرار می گیرن.
نکته: اندیس آرایه ها از صفر شروع می شه. اندیس آرایه ها از n تا n-1 هست.
فضایی که یه آرایه برخسب بایت تو حافظه اشغال می کنه:
تعداد خانه ها×اندازه هر خانه بر حسب بایت= فضای اشغال شده توسط آرایه
معمولا آرایه ها در حلقه های for استفاده می شن و اندیس آرایه همون اندیس حلقه for هست.
Max و Min یابی در آرایه:
اول فرض می کنیم اولین عنصر max یا min باشه و اون رو در متغیری مثلا max یا min می ریزیم. سپس در یه حلقه خونه های بعدی رو با max یا min مقایسه می کنیم. اگر اون خونه از max بزرگتر (یا از min کوچکتر) باشه اون رو توی max یا min می ریزیم.
ابنم فرمت اصلیش:
for(i=1; i<n; i++) {
if (a[i]>max)
(max=a[i]; locmax=i);
if (a[i]<min)
(min=a[i]; locmin=i);
مرتب سازی آرایه ها(Bubble sort):
در این نوع مرتب سازی هر بار عنصری رو با عنصر بعدی خودش مقایسه می شه. (اینو می دونم خوب بلدید)
فرمت اصلیشم این شکلیه:
صعودی:
for (j=1;j<n;j++)
for (i=0;i<n-j;i++)
if (a[i]>a[i+1]){
temp=a[i]
a[i]=a[i+1]
a[i+1]=temp
نزولی:
همین جوریه فقط if (a[i] < a[i+1] )
جستجو در آرایه:
در آرایه های نامرتب جستجو به صورت خطی و در آرایه های مرتب به صورت دودویی هست.
جستجوی ترتیبی: عنصر مورد جستجو با هر یک از عناصر آرایه مقایسه می شه اگه با هم برابر بودن جستجو تموم می شه وگرنه عمل مقایسه با عنصر بعدی انجام می شه.
فرمتش هم اینجوریه:
for (i=0;i<n;i++)
if (k==x[i]) break;
if (i==n) printf(“the number is not exist in array”);
else printf(“the number is %dth element”, i);
جستجوی دودویی:
عنصر مورد نظر با خونه وسط آرایه مقایسه می شه. اگر با این خونه برابر بود جستجو تموم می شه. اگر از خونه وسط بزرگتر بود جستجو در بخش بالایی آرایه و در غیر این صورت جستجو در بخش پائینی آرایه انجام می شه(حالت صعودی)
فرمت:اول یه bubble sort بعد یه باینری
/* bubble sort*/
for (j=1;j<n;j++)
for (i=0;i<n-j;i++)
if (a[i]>a[i+1]){
temp=a[i]
a[i]=a[i+1]
a[i+1]=temp
/* binary search*/
Low=0; high=n-1;
While(low<=high) {
Mid=(low+high)/2;
if (k>x[mid])
high=mid-1;
else if (k>x[mid])
low=mid+1;
else (printf(“the number %d exist in array”,k)
exit(0); }
}
Printf(“the number %d not exist in array”,k);
آرایه های چند بعدی:
همون ماتریسه. (بیشتر توضیح نمی دم زیاد می شه)
آدرس خانه [i][j]:
[(m*i)+j]*k+a =آدرس خانه [i][j]
ماتریس ها در دو حلقه for استفاده می شه که اندیس یکی از حلقه ها همون اندیس سطر و اندیس حلقه دیگه اندیس ستون های ماتریس است.
فرمتش هم تابلو هست:
for (i=0; i<n;i++)
for (j=0; j<m; j++)
c[i][j]=a[i][j]+b[i][j];
دیگه برای امشب زیاد می شه. منم خستم. کتاب رو هم فراموش نکنید.
|