如何合并排序字符?

时间:2014-12-03 16:11:12

标签: c arrays

我正在尝试合并排序字符。每当我输入一个字符数组时,数组的最后一个元素仍然是未识别/无法识别的。

如何修复程序?

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;
}

1 个答案:

答案 0 :(得分:1)

你的程序似乎是正确的。你确定你用正确的界限来调用它吗?例如:

MergeSort(str, 0, strlen(str)-1);