我正在尝试合并排序字符。每当我输入一个字符数组时,数组的最后一个元素仍然是未识别/无法识别的。
如何修复程序?
void Merge(char *array, int left, int mid, int right) {
char tempArray[right-left+1];
int pos = 0, lpos = left, rpos = mid + 1;
while (lpos <= mid && rpos <= right) {
if (array[lpos] <= array[rpos]) {
tempArray[pos++] = array[lpos++];
} else {
tempArray[pos++] = array[rpos++];
}
}
while (lpos <= mid)
tempArray[pos++] = array[lpos++];
while (rpos <= right)
tempArray[pos++] = array[rpos++];
int iter;
for (iter = 0; iter < pos; iter++) {
array[iter+left] = tempArray[iter];
}
return;
}
void MergeSort(char *array, int left, int right) {
int mid = (left + right) / 2;
if (left < right) {
MergeSort(array, left, mid);
MergeSort(array, mid + 1, right);
Merge(array, left, mid, right);
}
return;
}
答案 0 :(得分:1)
你的程序似乎是正确的。你确定你用正确的界限来调用它吗?例如:
MergeSort(str, 0, strlen(str)-1);