题目如下:
选择排序法对于小数组来说比归并排序快,尽管当数组变大时,情况相反。如果你想设计一个函数SortIntegerArray,使之适应于各种大小的数组,那么可以把两种策略结合起来,对大数组用合并排序,对小数组使用选择排序。用这种方法重新实现函数SortIntegerArray,那么该如何选择区分大小数组的那个分界点呢?
要求:从一个数据文件中读入N个整数(N<=100000),且把结果保存到另一个文本文件中,并显示排序所用的时间。
//merselsort.h
//
//merselsort.h
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
//定义计时参数
LARGE_INTEGER nFreq, t11, t12, t21, t22;
double dt, dt1, dt2;
//归并排序
void mergesort(long *list, long length)
{
long i, left_min, left_max, right_min, right_max, next;
long *tmp = (long*)malloc(sizeof(long) * length);
if (tmp == NULL)
{
fputs("ERROR!\n", stderr);
abort();
}
for (i = 1; i < length; i *= 2) // i为步长,1,2,4,8……
{
for (left_min = 0; left_min < length - i; left_min = right_max)
{
rig