我在Xcode中創建了一個簡單的項目,用於實現算法,現在我試圖實現mergesort。 歸併函數的原型是Xcode編譯器問題
//mergesort.h
void merge(long *left, long *right, int lsize, int rsize);
void mergesort(long *data, int datasize);
實施是
//mergesort.c
void merge(long *left, long *right, int lsize, int rsize){
int i = 0, j = 0, k = 0;
long *temp = malloc(sizeof(long) * (rsize + lsize));
while(i < lsize && j < rsize){
if(left[i] < right[j]){
temp[k++] = left[i++];
}else{
temp[k++] = right[j++];
}
if(i == lsize){
for(;j < rsize;){
temp[k++] = right[j++];
}
}
if(j == rsize){
for(;i < lsize;){
temp[k++] = left[i++];
}
}
}
memcpy(left, temp, sizeof(long) * (lsize + rsize));
free(temp);
}
void mergesort(long *data, int datasize){
int lsize, rsize;
lsize = datasize/2;
rsize = datasize - lsize;
if(lsize < 1 || rsize < 1){
return;
}else{
mergesort(data, lsize);
mergesort(data + lsize, rsize);
merge(data, data + lsize, lsize, rsize);
}
所以問題是,我不能編譯代碼。我想知道編譯器說: 「調用函數調用的參數太少,期望4,有2」在調用mergesort()時,即在 mergesort(data,lsize); mergesort(data + lsize,rsize);
這是爲什麼?這是奇怪的默認xcode compilator功能還是我做錯了什麼?
你得到的錯誤是哪一行? – Pete 2013-02-15 20:24:44
符合遞歸調用'mergesort(data,lsize);''mergesort(data + lsize,rsize);'和main()正文中的第一個函數調用 – 2013-02-15 20:29:46