一. 目的
当归并排序,划分的分组小于一定值时这些分组进行插入排序。然后对各个分组进行合并。
分析:标准归并排序增加长度限制即刻,长度达到限制,则调用插入排序。
二. 代码实现
1、代码实现
//对分组进行插入排序的归并实现
void MergeSortSubVerInsert(T testArray[], int Begin, int End){
if (Begin < End){
if (End - Begin < INSERT_MIN){
InsertSort(&testArray[Begin], End - Begin + 1);
}
else{
int Pivot = (Begin + End) / 2;
MergeSortSub(testArray, Begin, Pivot);
MergeSortSub(testArray, Pivot + 1, End);
Merge(testArray, Begin, Pivot, End);
}
}
}
2、结果截图
三.复杂度分析
空间复杂度Nlg(N/K),时间复杂度,插入排序为(N/K)*K^2=NK
归并过程为Nlg(N/K),总的时间复杂度为O(NK+Nlg(N/K))
四. 后续计划
Honner规则进行多项式求值。