تیم برنامه نویسی گروه تمدن

مرجع کامل فارسی برنامه نویسی به زبان سی پلاس پلاس

  • Increase font size
  • Default font size
  • Decrease font size

برنامه مرتب سازی به روش Merge Sort

فرستادن به ایمیل چاپ مشاهده در قالب پی دی اف

به نام خدا

یکی از بهترین انواع مرتب سازی روش merg sort می باشد. برای درک بهتر، این قسمت را با یک مثال آموزش می دهیم:

می خواهیم لیست روبه­ رو را به روش merge sort  مرتب کنیم : 8,2,4,6,9,7,10,1,5,3

merge sort با قسمت کردن و جدا کردن لیست به دو قسمت، با اعضا منحصر بفرد به صورت متوالی شروع می­ شود:

merge_1

حال این لیست ها را به صورت دوتایی مرتب می کنیم  تا به لیست اصلی برسیم، شکل زیر نشان دهنده این موضوع است:

merge_2

برای انجام merge sort  ما یک لیست را به 2 تا زیرلیست که اندازه آنها ( طول آنها ) تقریباً یکسان هستند تقسیم می­کنیم. هر کدام از زیر لیستها را با استفاده از اگوریتم merge sort مرتب می­کنیم، سپس دو زیر لیست را به هم می چسبانیم. برای این کار ابتدا تابعی به نام merge تعریف می کنیم که در آن یک آرایه را با گرفتن اندیس ابتدا و انتها به دو قسمت با طول مساوی تقسیم می کند:

void merge(int arr[ ] , int low, int high){
int mid=(low+high)/2;
int j = low;
for (int i = mid + 1 ; i <= high ; i++){
while (arr[ j ] <= arr[ i ] && j < i)
j++;
if (j == i)
break;
int t = arr[ i];
for (int k = i ; k > j ; k--)
arr[ k ] = arr[k-1];
arr[ j ] = t;
}//end for i
}//end merge 

سپس تابعی دیگر تعریف می کنیم تا با استفاده از تابع قبلی آرایه منظم شده را به ما ارائه دهد.

void merge_sort (int arr[ ] , int low , int high)
{
if (low >= high)
return;
int mid = (low + high) / 2;
merge_sort (arr , low , mid);
merge_sort (arr , mid + 1 , high);
merge(arr , low , high);
}//end merge_sort

 

در واقع ابتدا آرایه را تا حد ممکن خرد می کنیم و وقتی دوباره می خواهیم آن ها را بهم بچسبانیم یا به اصطلاح merge کنیم این کار را بر اساس بزرگتر و کوچک تر بودن اعداد انجام می دهیم. به این ترتبب در انتها آرایه مرتب خواهد شد.

در این الگوریتم پیچیدگی در بهترین و بدترین حالت برابر است با n*logn

برای دانلود این الگوریتم در یک برنامه می توانید روی لیک زیر کلیک نمایید:

دانلود سورس کد و فایل اجرایی برنامه مرتب سازی به روش Merge Sort به صورت رایگان با لینک مستقیم

آخرین بروز رسانی مطلب در دوشنبه ، 9 بهمن 1391 ، 15:37  

نظرات 

 
tnxali دوشنبه 02 ارديبهشت 1392 ، ساعت 04:01
mamnooooooooooo ooooooooooooon
پاسخ | پاسخ با نقل قول | نقل قول
 
 
پاسخ: برنامه مرتب سازی به روش Merge Sort salma دوشنبه 02 ارديبهشت 1392 ، ساعت 08:34
ممنون به خاطر گذاشتن گذاشتن این مطلب! خیلی مفید بود!
پاسخ | پاسخ با نقل قول | نقل قول
 

افزودن نظر

دوست عزیز و کاربر گرامی
نظرات بعد از بررسی در سایت درج خواهند شد.
مطمئنا از شنیدن انتقادهای شما خوشحال خواهیم شد.
دلیل فیلتر کردن نظرات صرفا جلوگیری از نظرات مغایر با اسلام و جمهوری اسلامی ایران می باشد. امیدواریم ما را به خاطر این کار درک نمایید. با تشکر






کد امنیتی
بازنشانی