Im doing a quicksort overload function for bool, char, long.. etc. but once I compile it, it says the error mentioned in the main function. It runs perfectly when it's not overloaded. here's the code:
main.cpp
Code:
void sortArray(charArray, 0, size-1);
void sortArray(boolArray, 0, size-1);
void sortArray(intArray, 0, size-1);
void sortArray(longArray, 0, size-1);
void sortArray(floatArray, 0, size-1);
void sortArray(doubleArray, 0, size-1);
sort.cpp
Code:
void printArr(int* arr, int n);
int splitArr(int* arr, int pivot, int start, int end);
void sortArray(int* arr, int start, int end);
void swap(int &a, int &b);
void printArr(int* arr, int n)
{
int i;
for( i = 0; i < n; i++) cout<<arr[i]<<'\t';
cout << endl;
}
void sortArray(int* arr, int start, int end)
{
int pivot = arr[start];
int splitPoint;
if(end > start)
{
splitPoint = SplitArray(arr, pivot, start, end);
arr[splitPoint] = pivot;
sortArray(arr, start, splitPoint-1);
sortArray(arr, splitPoint+1, end);
}
}
int splitArr(int* arr, int pivot, int start, int end)
{
int leftBoundary = start;
int rightBoundary = end;
while(leftBoundary < rightBoundary)
{
while( pivot < arr[rightBoundary]
&& rightBoundary > leftBoundary)
{
rightBoundary--;
}
swap(arr[leftBoundary], arr[rightBoundary]);
while( pivot >= arr[leftBoundary]
&& leftBoundary < rightBoundary)
{
leftBoundary++;
}
swap(arr[rightBoundary], arr[leftBoundary]);
}
return leftBoundary;
}
void swap(int &a, int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}