بایگانی برچسب: s

آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – الگوریتم های پر کاربرد – قسمت دوم

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

مرتب سازی تعویضی

در الگوریتم های مرتب سازی قصدمان این است که اعداد یک آرایه ی عددی را  به صورت صعودی یا نزولی مرتب کنیم.
الگوریتم های مرتب سازی آرایه انواع مختلفی دارند مانند: حبابی ، تعویضی ، shell ، quick sort و… .
در این الگوریتم مرتب سازی هر اندیس آرایه با اندیس های بعد از خود مقایسه می شود و طبق شرط مقایسه ی مان اعداد آرایه را مرتب می کنیم.
شرط مقایسه :
صعودی: اگر این عدد از این اندیس آرایه بزرگتر از اعداد بعد از خود بود آن ها را با هم تعویض کن.
نزولی: اگر این عدد از این اندیس آرایه کوچکتر از اعداد بعد از خود بود آن ها را با هم تعویض کن.

توضیحات الگوریتم مرتب سازی

فرض کنید آرایه ی ما این باشد:

روش مرتب سازی به این صورت خواهد بود:
گام اول: اندیس صفرم یعنی ۳ ابتدا با ۰ بعد با ۱ سپس با ۲ و سپس با ۵ مقایسه می شود
گام دوم: اندیس یک یعنی ۰ با ۱ و ۲ و ۵ مقایسه می شود
و در گام های بعدی هم به همین صورت ادامه خواهد داشت.
در تصویر می توانید بهتر متوجه شوید:
sort_tavizi
مقایسه ها با خط نمایش داده شده است.
کد

خروجی:
Osort

توضیحات: ما ابتدا یک آرایه تعریف کردیم با یک متغیر به نام temp که بتوانیم با استفاده از آن مقادیر آرایه را جا به جا کنیم سپس در for تودرتو الگوریتم مرتب سازی را اجرا کردیم و در for بعدی آرایه ی مرتب شده را نمایش دادیم.
شرط ما در if این است که اگر مقدار اندیس آرایه با مقدار اندیس های بعد از خود بزرگتر بود آن ها را با متغیر کمکی جابجا کن.
برای اینکه ما دو مقدار از دو اندیس آرایه را با هم جابه جا کنیم به یک متغیر کمکی نیاز داریم و به همان صورت که در داخل بلوک if میبینید دو مقدار را جابه جا می کنیم.
در این شرط آرایه ما آرایه را به صورت صعودی مرتب کردیم ولی اگر شما بخواهید آن را به صورت نزولی مرتب کنید فقط کافیست شرط آرایه را بر عکس کنید به صورت:

جابجایی مقادیر دو عدد بدون استفاده از متغیر کمکی

برای جا به جایی دو مقدار در دو متغیر ما به متغیر کمکی نیاز داریم ولی اگر کسی بخواهد بدون استفاده از آن متغیر کمکی دو مقدار را جا به جا کند باید چه کار کرد؟
ما می توانیم با استفاده از عملگر های محاسباتی آن دو مقدار را جا به جا کنیم.

خروجی:
jabejayi