【发布时间】:2015-07-03 18:10:11
【问题描述】:
我有它,以便用户定义矢量的大小,然后填充一个矢量。然后使用冒泡排序(家庭作业)对该向量进行排序。但是,当显示“排序的”向量时,其中的数字与原始创建中的数字不同。如何先创建向量,显示,然后排序显示??
#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;
}
}
}
【问题讨论】:
-
for (auto i : data) { std::cout << i << ' ';} -
你已经在你的 main 中声明了一个函数
void bubbleSort(vector<int>& data)。你想用它做什么? -
为什么要在排序循环中打印矢量元素?您应该在完成排序后执行此操作。
-
Barmar 是正确的,您需要将打印移到排序循环之外。您当前的程序不会打印实际的排序向量。打印的元素数量甚至可能不是当前设计的向量中的元素数量。
-
感谢大家的帮助。 @Phantom 我试图创建和使用一个函数。我认为函数可以在 int main 中创建?
标签: c++ sorting vector parameter-passing