本章也会深入介绍归并排序的两种写法, 递归版本的归并排序与非递归版本的归并排序.
博客主页:酷酷学!!!
您的支持是我更新的最大动力!...归并排序的递归法
首先我们需要具备这样一个思想, 如果两组数据有序, 我们就可以进行归并, 取小的数据进行依次排列, 那么我们就需要一个临时的数组进行存放, 首先动态申请块与数组空间大小相同的空间, 然后进行内层函数的递归调用...end2)
{
tmp[j++] = a[begin2++];
}
memcpy(a+begin, tmp+begin, sizeof(int) * (end - begin + 1));
}
归并排序的非递归法...memcpy(a + i, tmp + i, sizeof(int) * (end2 - i + 1));
}
gap *= 2;
}
free(tmp);
tmp = NULL;
}
非递归法与递归法的思路是一模一样的...if (begin2 >= n)
{
break;
}
if (end2 >= n)
{
end2 = n - 1;
}
如此非递归版的归并排序我们也完成了