我已经在 C++ 中实现了合并排序。它没有错误,但不知何故不起作用

i have implemented merge sort in c++. it has no errors but somehow it doesn't work

本文关键字:有错误 不起作用 何故 排序 C++ 合并 实现      更新时间:2023-10-16

下面是 C++ 中的合并排序实现。我使用了Visual Studio Code。它接受输入,但随后停止而不显示任何错误。我认为它可能在某处有分段错误,但我无法弄清楚。

#include<iostream>
using namespace std;
void merge(int arr[], int beg, int mid, int end) //function to merge the arrays
{
int i = beg;
int j = mid +1;
int k, index = 0;
int temp[100];
while(i <= mid && j <= end)
{
    if(arr[i] < arr[j])
    {
        temp[index] = arr[i];
        i++;
    }
    else
    {
        temp[index] = arr[j];
        j++;
    }
    index++;
}
while(i <= mid)
{
    temp[index] = arr[i];
    i++;
    index++;
}
while(j <= end)
{
    temp[index] = arr[j];
    j++;
    index++;
}
for(int k = beg; k < index; k++)
    arr[k] = temp[k];
}
void mergeSort(int arr[], int beg, int end)  //dividing the array
{
int mid = (beg + end)/2;
mergeSort(arr, beg, mid);
mergeSort(arr, mid+1, end);
merge(arr, beg, mid, end);
}
int main(void)
{
int arr[100];
cout<<"enter the array"<<endl;
 int size = sizeof(arr);
for(int i = 0; i < size; i++)
    cin>>arr[i];

mergeSort(arr, 0, size-1);
for(int i = 0; i < size; i++)
    cout<<arr[i];
}

递归mergeSort函数导致堆栈溢出,因为函数中没有终止条件。该函数在所有路径上都是递归的。这是无限递归的情况,其中函数永远不会返回并不断调用自己,从而导致堆栈溢出。更改函数类型,使用条件语句并在适当时返回。