求助归并排序
  • 板块学术版
  • 楼主zljhenry
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/9/18 19:43
  • 上次更新2023/11/4 06:27:01
查看原帖
求助归并排序
363144
zljhenry楼主2021/9/18 19:43

正在复习初赛,发现不会归并(

//合并两个序列
void mergeArray(int arr[], int first, int mid, int last, int temp[])
{
  int i = first;
  int j = mid + 1;
  int m = mid ;
  int n = last;
  int k = 0;
  while (i <= m && j<=n)
  {
    if (arr[i] <= arr[j])
      temp[k++] = arr[i++];
    else
      temp[k++] = arr[j++];
  }
  while (i <= m)
    temp[k++] = arr[i++];
  while (j <= n)
    temp[k++] = arr[j++];
  for (i = 0; i < k; i++)
    arr[first + i] = temp[i];
}
void mySort(int arr[], int first, int last, int temp[])
{
  if (first < last)
  {
    int mid = (first + last) / 2;
    mySort(arr, first, mid, temp);
    mySort(arr, mid+1, last, temp);
    mergeArray(arr, first, mid, last, temp);
  }
}
bool mergeSort(int arr[], int len)
{
  int*p = new int[len];
  if (NULL == p)
    return false;
  mySort(arr, 0, len - 1, p);
  delete[] p;
  return true;
}

只有一段代码,谁能讲讲?

谢谢

2021/9/18 19:43
加载中...