-
Bucket Sort
Hello. I need help with the Bucket Sort. I searched through the C++ board, as well as my book and couldn't find anything useful to me. The code is below.
Thanks!
Code:
#include <iostream>
#include <iomanip>
#include <vector>
#include <ctime>
#include <cstdlib>
using namespace std;
vector <int> FillVec (void);
void PrintVec (vector <int>);
void BucketSort (vector <int> &);
void Gathering (vector <int> &, int);
int main (void)
{
vector <int> IntVector (55);
srand(time(NULL));
int number,digitCnt=0;
cout<<"Enter the Number: ";
cin>>number;
while(number)
{
number=number/10;
digitCnt++;
}
cout<<digitCnt<<endl;
IntVector = FillVec ();
PrintVec (IntVector);
BucketSort (IntVector);
PrintVec (IntVector);
return 0;
}
vector <int> FillVec (void)
{
int cnt = 0;
vector <int> TempVec (55);
for (int i = 0; i < 50; i++)
{
TempVec[i] = rand() % 100 + 1;
}
return TempVec;
}
void PrintVec (vector <int> ivec)
{
for (int index = 0; index < 50; index++)
{
cout << ivec[index] << endl;
}
}
void BucketSort (vector <int> & ivec)
{
for (int Pass = 10; Pass < 1000000; Pass *= 10)
{
Gathering (ivec, Pass);
}
}
void Gathering (vector <int> & ivec, int ps)
{
int pairs, index, x, y, z;
vector <int> aVec(10);
x = y;
for(index = 0; index < 50; index++)
{
z = ivec[index] / ps;
z = z * ps;
z = ivec[index] - z;
aVec[z].push_back(ivec[index]);
}
for(y = 0; y < 10; y++)
{
for(pairs = 0; pairs < aVec[pairs].size(); pairs++)
{
ivec[x] = aVec[y][pairs];
x++;
}
}
}