You need to pass by reference; by making a copy, you sort a temporary copy, and then that’s it; it disappears and the original is still unsorted, because, once again, you sorted only a temporary copy of the entire vector.
So change vector<int> a
to vector<int>& a
.
Here’s the code, fixed:
http://coliru.stacked-crooked.com/a/2f118555f585ccd5
#include <iostream> #include <vector> using namespace std; void bubbleSort(vector<int>& a); void printVector(vector<int> a); int main(int argc, char const *argv[]) { vector<int> a {3,2,6,1}; printVector(a); bubbleSort(a); printVector(a); } void bubbleSort(vector<int>& a) { bool swapp = true; while(swapp){ swapp = false; for (size_t i = 0; i < a.size()-1; i++) { if (a[i]>a[i+1] ){ a[i] += a[i+1]; a[i+1] = a[i] - a[i+1]; a[i] -=a[i+1]; swapp = true; } } } } void printVector(vector<int> a){ for (size_t i=0; i <a.size(); i++) { cout<<a[i]<<" "; } cout<<endl; }