DataCount는 숫자를 정렬하는 횟수입니다.c에서 mergesort에서 최악의 경우를 만드는 방법은 무엇입니까?
int* MakeMWData(int DataCount)
{
//하게 배열
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]);
최악의 경우는 없습니다. "표준"병합 정렬은 항상 동일한 수의 작업을 수행합니다. –
이 답변보기 http://stackoverflow.com/questions/24594112/worst-input-data-on-mergesort/24594419#24594419 – Jerky