zahra-joon
شنبه 19 اردیبهشت 1394, 12:43 عصر
سلام دوستان
میشه تو رفع کردن مشکل این برنامه مرتب سازی ادغامی (Merge Sort) بهم کمک کنین؟
فایل ضمیمه windows form application هست و با ویژوال 2010
void MergeSort(int n, int[] a)
{
int h = n / 2;
int m = n - h;
int[] u = new int[h];
int[] v = new int[m];
if (n > 1)
{
copy a[0] through a[h-1] to u[0] through u[h-1]
copy a[h] through a[n-1] to v[0] through v[m-1]
MergeSort(h,u);
MergeSort(m,v);
Merge(h,m,u,v,a);
}
}
void Merge(int h, int m, int[] u, int[] v, int a)
{
int i, j, k;
i = j = k = 0;
while (i < h && j < m)
{
if (u[i] < v[j])
{
a[k] = u[i];
i++;
}
else
{
a[k] = v[j];
j++;
}
k++;
}
if(i>h)
copy v[j] through v[m-1] to a[k] through a[h+m-1]
else
copy u[i] through u[h-1] to a[k] through a[h+m-1]
}
میشه تو رفع کردن مشکل این برنامه مرتب سازی ادغامی (Merge Sort) بهم کمک کنین؟
فایل ضمیمه windows form application هست و با ویژوال 2010
void MergeSort(int n, int[] a)
{
int h = n / 2;
int m = n - h;
int[] u = new int[h];
int[] v = new int[m];
if (n > 1)
{
copy a[0] through a[h-1] to u[0] through u[h-1]
copy a[h] through a[n-1] to v[0] through v[m-1]
MergeSort(h,u);
MergeSort(m,v);
Merge(h,m,u,v,a);
}
}
void Merge(int h, int m, int[] u, int[] v, int a)
{
int i, j, k;
i = j = k = 0;
while (i < h && j < m)
{
if (u[i] < v[j])
{
a[k] = u[i];
i++;
}
else
{
a[k] = v[j];
j++;
}
k++;
}
if(i>h)
copy v[j] through v[m-1] to a[k] through a[h+m-1]
else
copy u[i] through u[h-1] to a[k] through a[h+m-1]
}