private int[] a = { 5, 2, 4, 7, 1, 3, 2, 6 };
private int[] b = new int[8];
private int karsilastirma = 0;
public void m_sort(int p, int r)
{
if (p < r)
{
int q = (p + r) / 2;
m_sort(p, q);
m_sort(q + 1, r);
merge(p, q + 1, r);
}
}
public void merge(int p, int q, int r)
{
int sb, index, yer;
sb = q - 1;
yer = p;
index = r - p + 1;
while ((p <= sb) && (q <= r))
{
if (a[p] <= a[q])
{
b[yer] = a[p];
yer = yer + 1;
p = p + 1;
karsilastirma += 1;
}
else
{
b[yer] = a[q];
yer = yer + 1;
q = q + 1;
karsilastirma += 1;
}
}
while (p <= sb)
{
b[yer] = a[p];
p = p + 1;
yer = yer + 1;
karsilastirma += 1;
}
while (q <= r)
{
b[yer] = a[q];
q = q + 1;
yer = yer + 1;
karsilastirma += 1;
}
for (int i = 0; i < index; i++)
{
a[r] = b[r];
r = r - 1;
}
}