首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

归并排序,哪里出错了解决方案

2012-04-21 
归并排序,哪里出错了C/C++ codevoid merge(int a[], int low, int mid, int high){int n1 mid - low + 1

归并排序,哪里出错了

C/C++ code
void merge(int a[], int low, int mid, int high){    int n1 = mid - low + 1;    int n2 = high - mid;    int b[10];    int c[10];    int i, j, k;    for(i = 0; i < n1; i++)        b[i] = a[low+i-1];    for(i = 0; i < n2; i++)        c[i] = a[mid+i];    i = 0;    j = 0;    k = 0;    while((i < n1) && (j < n2) && (k < high))    {        if(b[i] < c[j])        {            a[k] = b[i];            i++;        }        else         {            a[k] = c[j];            j++;        }        k++;        }}void mergeSort(int a[], int low, int high){    int mid;    if(high >= low)    {        mid = (low + high)/2;        mergeSort(a, low, mid);        mergeSort(a, mid, high);        merge(a, low, mid, high);        }}


代码很乱,大家凑合看

[解决办法]
merge方法while循环,一个数组完毕后(i == n1 || j == n2),b或c剩余的部分怎么办的?

热点排行