المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الفرز بالدمج Merge Sort


Golden man
03-12-2008, 10:27 AM
الفرز بالدمج Merge Sort


هذا مثال وجدته لدي عن خوارزمية الفرز بالدمج :


397
398
399
400


و بالنسبة لتابع الفرز بالدمج :


void Merge(int *arr,int low,int high)
{
int *temp = new int[size];

int mid = (low+high)/2;
int i=low ,j=mid+1, k=low;

while(i<=mid && j<=high)
{
if(arr[i] < arr[j])
temp[k++] = arr[i++];
else if(arr[j] < arr[i])
temp[k++] = arr[j++];
else
{
temp[k++] = arr[i++];
temp[k++] = arr[j++];
}
}
while(i<=mid)
temp[k++] = arr[i++];

while(j<=high)
temp[k++] = arr[j++];

for(i=low; i<=high; i++)
arr[i] = temp[i];

delete temp;
}
void MergeSort(int *arr,int low,int high)
{
if(low < high)
{
int mid = (low+high)/2;
MergeSort(arr,low,mid);
MergeSort(arr,mid+1,high);
Merge(arr,low,high);
}
}


و هنا يوجد برنامج اختبار الفرز بالدمج كما طلبه الأستاذ :
http://www.100hla.com/up/uploads/5dcdb76d5d.rar

pro_maher
05-06-2008, 02:02 PM
جزاك الله خيراً

ليس غريباً عليك و زادك الله من خيره