C++ 多种元素的排序

C++ 多种元素的排序,c++,C++,我做了一个自然的合并排序方法。我读取一个充满整数的文件,然后执行基数排序方法。然后显示结果。出于某种原因,它可以完美地处理多达5000个数字的文件,但当我尝试更高的文件时,它似乎正在加载,什么也没有发生,然后我只需按任意键继续消息。有人知道为什么会这样吗 int main() { bool result = false; int chose; string fileName,text; fstream inText; int sizeOf = 0;

我做了一个自然的合并排序方法。我读取一个充满整数的文件,然后执行基数排序方法。然后显示结果。出于某种原因,它可以完美地处理多达5000个数字的文件,但当我尝试更高的文件时,它似乎正在加载,什么也没有发生,然后我只需按任意键继续消息。有人知道为什么会这样吗

int main()
{
    bool result = false;
    int chose;
    string fileName,text;
    fstream inText;
    int sizeOf = 0;
    COMPARE_COUNT = 0;
    SWAP_COUNT = 0;
    cout << "Please Enter An Input File Name: ";
    getline(cin, fileName);
    inText.open(fileName.c_str() , fstream::in);

    if(!inText)
    {
        cout << "Could Not Open " << fileName << " File" << endl;
        exit(EXIT_FAILURE);
    }
    else
    {
        inText >> sizeOf;
        int * myArray  = new int[sizeOf];
        for(int i = 0; i < sizeOf; i++)
        {
            inText >> myArray[i];
        }       
        //Merge Sort
        int *copyArray2 = new int[sizeOf];
        cout << "Merge Sort" << endl;
        displayArray(copyArray2,sizeOf);
        cout << "Number Of Swaps: " << SWAP_COUNT << endl;
        cout << "Number Of Comparisons: " << COMPARE_COUNT << endl;
        cout << endl;
        SWAP_COUNT = 0;
        COMPARE_COUNT = 0;
    }
}

return 0;
}
intmain()
{
布尔结果=假;
int选择;
字符串文件名,文本;
fstream-inText;
int-sizeOf=0;
比较计数=0;
交换计数=0;

我的猜测可能是,程序内存不足,出现异常时崩溃。您有很多次调用
new
,但看不到
delete
。您完全正确,我认为会在方法末尾插入delete c/我的猜测是,程序内存不足,出现异常时崩溃。您有有几次调用
new
,但是看不到
delete
。你完全正确,我想应该在方法的末尾插入delete c/
 void mergeForNS(int *a, int size, int low, int high, int mid)
{
int i, j, k;
int *c = new int[size];
i = low;
k = low;
j = mid + 1;
while (i <= mid && j <= high)
{
    if (a[i] < a[j])
    {
        c[k] = a[i];
        k++;
        i++;
    }
    else
    {
        c[k] = a[j];
        k++;
        j++;
    }
}
while (i <= mid)
{
    c[k] = a[i];
    k++;
    i++;
}
while (j <= high)
{
    c[k] = a[j];
    k++;
    j++;
}
for (i = low; i < k; i++)
{
    a[i] = c[i];
  }
 }

 void mergeSort(int values[], int n,bool result)  
 {
    for(int i = 1; i < n; i = i + i  )//i *= 2)
    {
        for(int low = 0; low < n - i; low += i + i )//i*2)
        {
            mergeForNS(values,n,low,std::min(low+i+i-1,n-1),low+i-1);//s-1
        }
     }
 }