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

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

برای مشاهده بخش جهارم از آموزش زبان برنامه نویسی سی پلاس پلاس ، به ادامه مطلب بروید.

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

مرتب سازی آرایه ها

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

این الگوریتم ابتدا سعی می کند کوچکترین عنصر را یافته و آن را در اولین خانه از آرایه قرار دهد. سپس عدد کوچک بعدی (دومین عدد کوچکتر) را پیدا کرده و در دومین خانه آرایه قرار داده و همین عمل را تا مرتب سازی کامل آرایه تکرار می نماید.

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

void  selectionSort(int  A[], int n) {

   int i,j;

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

       for (j=i+1; j<n; j++)

            if (A[i] > A[j])  swap(A[i],A[j]) ;

}

تابع swap دو عد را جابجا میکند؛به این ترتیب عناصر آرایه به صورت صعودی قرار میگیرند. به مثال زیر توجه نمایید در این مثال نحوه ی استفاده از این الگوریتم که به الگوریتم ((مرتب سازی انتخابی))معروف است،شرح داده میشود.

برنامه ای که تعدادی عدد را از کاربر گرفته و آن ها را به صورت صعودی مرتب سازی میکند.

#include<iostream.h>
#include<conio.h>
void swap(int &a,int &b){
int temp;
temp=a;
a=b;
b=temp;
}
void sort(int a[],int n){
int i,j;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
swap(a[i],a[j]);
}
void main(){
int arr[100],n;
cout<<"please enter the number of the entered numbers:"<<endl;
cin>>n;
cout<<"please enter the numbers:"<<endl;
for(int k=0;k<n;k++)
cin>>arr[k];
sort(arr,n);
cout<<"the sorted arrray now is:"<<endl;
for(int i=0;i<n;i++)
cout<<arr[i]<<"  ";
getch();
}

در اینجا ابتدا تابع swap را تعریف کرده ایم که جای دو عدد را عوض میکند و سپس به تعریف تابعی که آرایه را مرتب سازی مینماید پرداخته ایم.در بدنه ی اصلی تابع پس از گرفتن عناصر آرایه و کامل شدن آن،آرایه و تعداد عناصر آن را به عنوان پارامتر به تابع sort ارسال کرده ایم.در تابع sort  هم برای جابجا کردن دو عنصر،تابع swap را فراخوانی کرده و دو عنصر را به عنوان پارامتر به صورت فراخوانی با ارجاع به تابع داده ایم.که باعث میشود مقادیر اصلی دو متغیر ارسالی پس از انجام کار تابع،تغییر کرده و هر عملیاتی که انجام شده است بر روی خود این پارامتر ها بوده است،و تاثیر نایی بر روی خود این متغیر ها انجام میشود.برای فراخوانی با ارجاع از علامت <<&>> استفاده مینماییم.

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

در شماره ی بعدی به بررسی الگوریتم های دیگری برای مرتب سازی آرایه ها میپردازیم.

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