归并排序的C语言实现(2)

if (arr_r.length == 0)
        {
                if (arr_l.length == 0) return;
                // return the arr_r array
                while (arr_l.length-- > 0)
                        arr_m->elements[arr_m->active++] = arr_l.elements[arr_l.active++];

return;
        }

if (arr_l.elements[arr_l.active] > arr_r.elements[arr_r.active])
        {
                // the next elements of the merge array is bigger one
                arr_m->elements[arr_m->active++] = arr_l.elements[arr_l.active++];
                arr_l.length--;

// recursively merge the rest array
                merge(arr_l, arr_r, arr_m);
        }
        else
        {
                // the next elements of the merge array is bigger one
                arr_m->elements[arr_m->active++] = arr_r.elements[arr_r.active++];
                arr_r.length--;

// recursively merge the rest array
                merge(arr_l, arr_r, arr_m);
        }
}

上周日开始写的这个程序,遇到了很多问题,也有很多收获。只要不选择放弃,肯定能解决遇到的问题~!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/42153ec9b7def3ba3891c56c968575ce.html