PDA

View Full Version : رفع اشكال merge sort



nastaran_s
دوشنبه 16 اردیبهشت 1387, 16:09 عصر
سلام.ميخواستم اشكال برنامه بگيريد .خروجي نشان نميدهد.ممنون



constint count = 10;
int[] array=newint[count];
int[] array1 = newint[count];
int i;
privatevoid txt_array_KeyPress(object sender, KeyPressEventArgs e)
{

if (e.KeyChar == '\r')
{
array[i] = Convert.ToInt32( txt_array.Text);

listBox1.Items.Add(txt_array.Text);
txt_array.Text = "";
i++;

}
}
privatevoid lbl1_Click(object sender, EventArgs e)
{
int low1 = Convert.ToInt32(array[0]);
int high1 = Convert.ToInt32(array.Length - 1);
m_sort(low1, high1);
for (i = low1; i <= high1; i++)
{
listBox2.Items.Add(array1[i].ToString());
}

}
publicvoid m_sort(int low, int high)
{
int mid;

if (low < high)
{
mid=(low+high)/2;
m_sort(low,mid);
m_sort(mid+1,high);
merge(low,mid,high);
}
}
publicvoid merge(int low, int mid, int high)
{
int i, j, k;

i = low; j = mid + 1; k = low;
while (i <= mid && j <= high)
{
if (array[i] < array[j])
{
array1[k] = array[i];
i++;
}
else
{
array1[k] = array[j];
j++;
}
k++;
}
if (i > mid)
{
array1[k] = array[j];
j++;
k++;
}
if (j > high)
{
array1[k] = array[i];
i++;
k++;
}

Sajjad.Aghapour
دوشنبه 16 اردیبهشت 1387, 21:50 عصر
سلام دوست عزیز.....
فکر کنم اشکال برنامت از تابع بازگشتی m_sort باشه.چون اندازه آرایه رو 10 گرفتی و low1 رو
array[0] و high در اینجا 9 مقداردهی میشه.پس اگه array[0] رو مثلا 10 یا بیشتر بدید دیگه تابع بازگشتیتون اجرا نمی شه.....
ولی بازم trace کنید..........
موفق باشید...