sorting - C++: Why is the created vector not passing to the next set of for loops? -


i have user defines size of vector , vector filled. vector sorted using bubble sort (homework assignment). however, when "sorted" vector displayed, there different numbers in in original creation. how first create vector, display it, sort , display it??

#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     (int i=0; i<n; i++)     {         data.push_back(rand()%10+1);     }     (int i=0; i<data.size(); i++)     {         cout<<"vector: "<< data[i]<<endl;     }      size = data.size();      //sorting     void bubblesort(vector<int> & data);     {         (int k = 1; k < size; k++)         {             (int = 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;             }          }                    }    

first off:

  1. make sure include necessary header files, e.g. stdlib.h used rand() function.
  2. get rid of unused variables, average, median , size.
  3. declare bubblesort function outside of main function, , add additional checkup code prevent sort if list has not more 1 element.

the sort problem related code snippet of yours:

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

simply remove -1

to fix sort problem, , better output, use following code:

#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; } 

hope helps ;)


Comments

Popular posts from this blog

shopping cart - Page redirect not working PHP -

php - How to modify a menu to show sub-menus -

python - Installing PyDev in eclipse is failed -