Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 气泡按降序排列文件中的第一个数字_C++_Arrays_Sorting_Bubble Sort - Fatal编程技术网

C++ 气泡按降序排列文件中的第一个数字

C++ 气泡按降序排列文件中的第一个数字,c++,arrays,sorting,bubble-sort,C++,Arrays,Sorting,Bubble Sort,我想使用2d数组的“气泡排序”算法进行排序。我的数组大小大约为数组[100000][100000]。我的输入号码将为n=100000 目前,我们可以使用较小的数组大小来解决排序问题 我需要按照降序排列第一个数字(第一个数字的行) 如果两个值的第一个数相同,那么我必须根据它们的第二个数对它们进行排序 最后,我必须将结果输出到一个txt文件中 让我们用一个例子来理解。这里,我的输入如下所示 41 11 34 4 69 4 78 6 62 8 5 5 81 3 5 10 上面是我们的输入示例,我们有

我想使用2d数组的“气泡排序”算法进行排序。我的数组大小大约为
数组[100000][100000]
。我的输入号码将为n=100000

目前,我们可以使用较小的数组大小来解决排序问题

  • 我需要按照降序排列第一个数字(第一个数字的行)
  • 如果两个值的第一个数相同,那么我必须根据它们的第二个数对它们进行排序
  • 最后,我必须将结果输出到一个txt文件中
  • 让我们用一个例子来理解。这里,我的输入如下所示

    41 11
    34 4
    69 4
    78 6
    62 8
    5 5
    81 3
    5 10
    
    上面是我们的输入示例,我们有几个输入。现在我需要按降序排列第一个数字。但如果两个值的第一个数相同,则根据第二个数对它们进行排序

    下面的输出示例

    81 3
    78 6
    69 4
    62 8
    41 4
    34 4
    5 10
    5 5
    
    如果有人能帮助我

    我是一个初学者,所以我试图手动输入文件来解决这个排序问题。我可以解决排序问题,然后我将尝试输入和输出文本

    我试过但没用的东西。我还在努力解决它

    #include<bits/stdc++.h>
    #include <algorithm>
    using namespace std;
    
    int main ()
    {
        int arr[100][100];
        int n,j;
        cin >>n;
        cout << "Please enter a number: " << endl;
        for(int i=0;i<n;i++)
        {   for (int j=i; j<n; j++)
            {
                cin>>arr[i][j];
            }
        }
        cout << "Unsorted array:" << endl;
        for (int i=0; i<n; i++)
        {
            for (int j=i; j<n; j++)
            {
                 cout<<arr[i][j]<<"\t";
            }
    
        }
    
        for (int i=0; i<=n; i++)
        {
            for (int j=i+1; j<=n-1; j++)
            {
                int temp;
                if(arr[i]>arr[j])
                {
                    temp=arr[i];
                    arr[i]=arr[j];
                    arr[j]=temp;
                }
            }
        }
    return 0;
    }
    
    #包括
    #包括
    使用名称空间std;
    int main()
    {
    国际航空公司[100][100];
    int n,j;
    cin>>n;
    不能对基本容器使用
    std::vector
    std::vector
    的动态增长功能解决了堆栈空间问题,使用
    std::array
    可以进行绑定单元格比较。即,您可以这样做:

    std::array<int, 2> ar1{1,2}, ar2{1,3};
    
    if (ar1 < ar2) ...
    
    输出

    8
    41 11
    34 4
    69 4
    78 6
    62 8
    5 5
    81 3
    5 10
    
    81 3
    78 6
    69 4
    62 8
    41 11
    34 4
    5 10
    5 5
    

    arr[100000][100000]是一个巨大的数组大小,这是不可能的。您必须减小大小。请检查此链接,以获取最大数组大小,请使用
    std::vector arr(n,std::vector(n))
    并将数字存储在其中。@TEDLYNMO仍然不起作用,问题中提到的大小太大,它会导致堆栈溢出。在正常情况下,最大数组大小可以是10^7。@NitaiChandraBanik只有输入了真正大的
    n
    才会有问题。此外,在堆上分配数组也会起作用大多数情况下。堆栈分配操作很可能会失败,正如您所指出的。非常感谢您。现在我将学习您的代码,我需要理解它。然后我将从文本文件中获取输入。这并不十分复杂。您可以在上找到关于此代码中使用的模板类的更多信息,可以说这是最好的在线re在C++中,我不理解你的问题,但是这个代码中的排序是一个简单的早期退出冒泡。它反复地扫描数据集,每个通道比较相邻的项目并根据需要交换它们。每次扫描后,该扫描的最极端项都“冒泡”。最后。下一次扫描迭代将减少一个项目,并重复该过程。如果在任何扫描之后,我们可以确定没有发生交换,那么整个序列将完全排序,我们可以停止所有操作。这是bubblesort的一个(唯一)赎回值。它是O(n)如果序列被排序。这对我帮助很大。现在,我想从我们手动输入的文本文件中输入,并生成一个输出文本文件。您可以始终使用重定向和欺骗:
    /prognameoutputfile
    。这实际上是说,使用
    inputfile
    的内容作为stdin运行
    /progname
    ,所有写入
    stdout
    的内容都转到
    outputfile
    。否则,需要检查
    argc
    argv
    、站立和对象等。这些类的用法和说明在链接中
    81 3
    78 6
    69 4
    62 8
    41 11
    34 4
    5 10
    5 5