DataCount是排序数字的次数。
int* MakeMWData(int DataCount)
{
// make array
int* Data = (int*)malloc(DataCount*sizeof(int));
int number = 2;
int count = 0;
Data[0] = 1;
//输入数据
int i,j;
for( i = DataCount;; i/=2)
{
count++;
for( j = 1; j<DataCount;j++)
{
//合并排序最差
我认为这是不正确的。
if(j%i == 0 && j %(i * 2) != 0)
{
Data[j] = number;
number++;
}
}
if(i==1)
break;
}
for( i = 0; i<DataCount ; i++)
{
if(Data[i] ==0)
Data[i] = number;
number++;
}
return Data;
}
在主要功能中制作最差数据。
int* MergeData = MakeMWData(DataCount[i]);
答案 0 :(得分:2)
mergesort的工作方式是将数组分成两个数组,递归(logn
次),直到能够比较元素对。然后它合并递归创建的数组,同时对它们进行排序。
对于某些排序算法(例如快速排序),元素的初始顺序可能会影响要完成的操作数。然而,它并没有对mergesort做任何改变,因为它必须完全执行相同数量的操作:递归地分成小数组,然后将它们合并回来,总共Θ(nlogn)
次。