Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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++;:为什么创建的向量没有传递到下一组for循环?_C++_Sorting_Vector_Parameter Passing - Fatal编程技术网

C++ C++;:为什么创建的向量没有传递到下一组for循环?

C++ C++;:为什么创建的向量没有传递到下一组for循环?,c++,sorting,vector,parameter-passing,C++,Sorting,Vector,Parameter Passing,我有它,用户定义向量的大小,然后填充向量。然后使用冒泡排序(家庭作业)对向量进行排序。但是,当显示“排序”向量时,其中的数字与原始创建中的数字不同。如何首先创建向量,显示它,然后对其进行排序并显示 #include <iostream> #include <vector> #include <cmath> #include <numeric> using namespace std; int main() { int n; dou

我有它,用户定义向量的大小,然后填充向量。然后使用冒泡排序(家庭作业)对向量进行排序。但是,当显示“排序”向量时,其中的数字与原始创建中的数字不同。如何首先创建向量,显示它,然后对其进行排序并显示

#include <iostream>
#include <vector>
#include <cmath>
#include <numeric>
using namespace std;

int main()
{
    int n;
    double average=0.0;
    int median = 0;
    double size = 0.0;
    int i=0;

    cout<<"Vector Length?: "<<endl;
    cin>>n;
    vector<int> data;
    srand(time(NULL));


    //Filling vector
    for (int i=0; i<n; i++)
    {
        data.push_back(rand()%10+1);
    }
    for (int i=0; i<data.size(); i++)
    {
        cout<<"Vector: "<< data[i]<<endl;
    }

    size = data.size();

    //Sorting
    void bubbleSort(vector<int> & data);
    {
        for (int k = 1; k < size; k++)
        {
            for (int i = 0; i<size -1 - k; i++)
            {   
                if (data[i] > data[i +1])
                {
                    int temp = data[i];
                    data[i] = data[i + 1];
                    data[i + 1] = temp;
                }
                cout<<"Sorted vector: "<< data[i]<<endl;
            } 
        }               
    }   
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
int n;
双平均=0.0;
整数中值=0;
双尺寸=0.0;
int i=0;
库特
  • 如果您计划稍后定义函数void bubbleSort(vector&data),则需要在调用它之前声明它\

    void bubbleSort(向量和数据);
    int main()
    {
    //这是你的密码
    气泡排序(数据);
    //这是你的密码
    }

  • 您只需要在需要变量之前定义它。如果您声明并且从不使用它,您将收到未使用的变量警告。因此,您可以更好地注释所有这些变量。您可以随时取消注释

    //双倍平均值=0.0;
    //整数中值=0;

  • 您应该从
    main()
    调用函数
    bubbleSort()
    ,如下所示:

    bubbleSort(data);
    
  • 您没有正确使用迭代器索引对vector的元素进行排序。如果您按以下方式更改函数bubbleSort,它将起作用

  • //排序
    void bubbleSort(矢量和数据)
    {
    int size=data.size();
    对于(int k=1;k
    
  • 确保为您使用的
    rand()
    函数包含所有必要的头文件,例如
    stdlib.h
  • 去掉所有未使用的变量,如
    平均值
    中值
    大小
  • main
    函数之外声明您的
    bubbleSort
    函数,并添加额外的检查代码,以防止在列表中不包含多个元素时进行排序
  • 排序问题与您的以下代码片段有关:

    for (int i = 0; i<size -1 - k; i++) { ... }
    

    for(int i=0;i
    for(auto i:data){std::您是否声明了一个函数
    void bubbleSort(vector&data)
    在主循环内。您想用它做什么?为什么要在排序循环内打印向量元素?您应该在完成排序后再这样做。Barmar是正确的,您需要将打印移到排序循环外。您当前的程序不打印实际排序的向量。打印的元素数为m甚至可能不是当前设计中向量中的元素数。谢谢大家的帮助。@Phantom我正在尝试创建和使用一个函数。我认为函数可以在int main中创建?因此使用
    你不需要使用
    srand(time(NULL)
    ?@Aaron不,但是
    是创建
    兰德所必需的()
    srand()
    可用。由于您希望在每次执行代码时都随机选择数字,只需在执行
    rand()
    函数之前添加此代码片段:
    srand(时间(0))
    我希望我也能将你的答案标记为最佳答案,这非常有帮助!谢谢!!进一步学习:可以在int main中创建并使用函数吗?还是必须始终按照上面所示的方式使用它们?@Aron正如我在答案中指定的,你不能在另一个函数中定义函数,甚至不能在main()中定义函数。只能从一个函数调用另一个函数。
    #include <iostream>
    #include <vector>
    #include <cmath>
    #include <numeric>
    using namespace std;
    
    void printVector(vector<int> & data)
    {
        for (int i=0; i<data.size(); i++)
        {
            cout<<"Vector: "<< data[i]<<endl;
        }
    }
    
    //Sorting
    void bubbleSort(vector<int> & data);
    {
        size = data.size();
        for (int k = 1; k < size; k++)
        {
            for (int i = 0; i<size -1 - k; i++)
            {   
                if (data[i] > data[i +1])
                {
                    int temp = data[i];
                    data[i] = data[i + 1];
                    data[i + 1] = temp;
                }
            } 
        }               
    }   
    
    int main()
    {
        int n;
        double average=0.0;
        int median = 0;
        double size = 0.0;
        int i=0;
    
        cout<<"Vector Length?: "<<endl;
        cin>>n;
        vector<int> data;
        srand(time(NULL));
    
    
        //Filling vector
        for (int i=0; i<n; i++)
        {
            data.push_back(rand()%10+1);
        }
        printVector(data);
        bubbleSort(data);
        printVector(data);
    
    }
    
    for (int i = 0; i<size -1 - k; i++) { ... }
    
    #include <iostream>
    #include <stdlib.h>
    #include <vector>
    #include <cmath>
    
    using namespace std;
    
    void bubbleSort(vector<int>& data)
    {
        if(data.size() <= 1)
            return;
    
        for(int i=1; i<data.size(); i++)
        {
            for(int j=0; j<data.size()-i; j++)
            {
                if(data.at(j) > data.at(j+1))
                {
                    int temp = data.at(j+1);
                    data.at(j+1) = data.at(j);
                    data.at(j) = temp;
                }
            }
        }
    }
    
    int main()
    {
        int n;
        vector<int> data;
    
        cout << "Vector Length?: ";
        cin >> n;
    
        // Filling vector
        for(int i=0; i<n; i++)
            data.push_back(rand()%10+1);
    
        cout << "Vector: ";
        for(int i=0; i<data.size(); i++)
            cout << data.at(i) << ", ";
    
        // Sorting
        bubbleSort(data);
    
        cout << endl << "Sorted Vector: ";
        for(int i=0; i<data.size(); i++)
            cout << data.at(i) << ", ";
    
        return 0;
    }