I am implementing a basic bucket sort algorithm. The main.cpp file is the driving program, sort.h stores the function declarations and bs.cpp is the algorithm implementation.
main.cpp
case 0: bucketSort(arr, n); break;
sort.h
void bucketSort(int* arr, int n);
bs.cpp
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <sort.h>
using namespace std;
// function to sort arr[] of size n using bucket sort
void bucketSort(float arr[], int n)
{
vector<float> b[n];
// put elements in different buckets
for (int i=0; i<n; i++)
{
int x = n*arr[i];
b[x].push_back(arr[i]);
}
// sort individual vectors
for (int i=0; i<n; i++)
{
sort(b[i].begin(), b[i].end());
}
int index = 0;
for (int i = 0; i < n; i++)
{
while (!b[i].empty())
{
arr[index++] = *(b[i].begin());
b[i].erase(b[i].begin());
}
}
}
When I compile, I receive error:
main.o: In function `main':
main.cpp:(.text+0x1d8): undefined reference to `bucketSort(int*, int)'
collect2: error: ld returned 1 exit status
make: *** [main.exe] Error 1
Not sure why it is coming back as undefined.