将气泡排序应用于大小为1000000的数组时,如何停止程序崩溃?

时间:2019-06-20 13:31:06

标签: c++

我制作了一个程序,可以对用户给定的大小数组进行排序。在这里,我使用了冒泡排序算法。问题是直到100000个输入它都可以正常工作,但是当我给数组的大小等于1000000时程序崩溃。是什么原因??是因为我的笔记本电脑有限吗?任何解决方案表示赞赏。编辑:我使用了调试器,它显示错误:“程序接收到的信号SIGSEGV,堆栈跟踪位于“调用堆栈”选项卡中。”

#include<iostream>
#include<cstdlib>

using namespace std;

void S(int &a,int &b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}

void the_gen(int num)
{    
    srand(1000);
    int A[num];
    for (int i= 0; i < num; i++)
    {
        A[i]=(rand()%10000);
    }

    int flag=0;
    int length_of_array=num;

    while(length_of_array>1)
    {
        for(int i=1;i<=length_of_array-1;i++)
        {
            if(A[i-1]>A[i])
            {   
                S(A[i-1],A[i]);
            }
        flag=i; 
        }
    length_of_array=flag;
    }

    cout<<endl;
    cout<<"After Sorting"<<endl;
    cout<<"[";
    for(int i=0;i<num;i++)
    {
        cout<<A[i]<<",";    
    }
    cout<<"]";
}

int main()
{
    int n;
    while(n!=0)
    {
        cout<<"Press 1 to try"<<endl;
        cout<<"Press 0 to exit"<<endl;
        cin>>n;
        if(n==1)
        {
            cout << "Size of array:" << endl;
            int size_of_array;
            cin >> size_of_array;
            the_gen(size_of_array);
        }
    }
}

0 个答案:

没有答案