【求帮助】求大家帮我看看,归并排序。结果不正确
陈夏明 2014-12-03 11:00:15 # include<stdio.h>
void guibing(int * num, int begin, int end);
void paixu(int * num, int begin, int mid, int end);
int main(void)
{
int num[] = {5,1,4,2,6,3,7,9,8,0};
int i=0;
printf("排序前:");
for(i=0; i<10; ++i)
printf("%d ", num[i]);
printf("\n");
guibing(num, 0, 9);
printf("排序后:");
for(i=0; i<10; ++i)
printf("%d ", num[i]);
return 0;
}
void guibing(int * num, int begin, int end)
{
int i;
if(begin < end)
{
int mid = (begin+end)/2;
guibing(num, begin, mid);
guibing(num, mid+1, end);
paixu(num, begin, mid, end);
}
}
void paixu(int * num, int begin, int mid, int end)
{
int temp[end-mid+1];
int k=0;
int b = begin, m = mid+1;
while(b<=mid && m<=end) //取元素比较并填入临时数组
{
if(num[b] < num[m])
{
temp[k] = num[b];
++b;
}
else
{
temp[k] = num[m];
++m;
}
++k;
}
//将剩余元素填入
while(b<=mid)
{
temp[k] = num[b];
++b;
++k;
}
while(m<=end)
{
temp[k] = num[m];
++m;
++k;
}
int i;
for(i=0; i<k; ++i)
{
num[i] = temp[i];
}
}