出现了好几个无法将函数定义与现有的声明匹配
小白求救。。
#include<iostream>
using namespace std;
template<class T>
class Sort
{
public:
void InputArray(T a[], int size);
void OutputArray(T a[], int size);
void insertionsort(T a[], int size);
void selection(T a[], int size);
void bubblesort(T a[], int size);
void shellsort(T a[], int size);
private:
T a[];
int size;
};
template<class T>
void Sort::InputArray(T a[],int size)
{
cout << "Please input size:" << endl;
cin >> size;
for (int i = 0; i < size; i++)
{
cout << "a[" << i << "]=";
cin >> a[i];
}
}
template<class T>
void Sort::OutputArray(T a[], int size)
{
for (int i = 0; i < size; i++)
{
cout << a[i] << " ";
}
cout << endl << endl;
}
template<class T>
void Sort::insertionsort(T a[], int size)
{
for (int i = 0; i < size; i++)
{
T tmp = a[i];
for (j = i; j > 0 && tmp < a[j - 1]; j--)
swap(a[j], a[j - 1]);
}
}
template<class T>
void Sort::selection(T a[], int size)
{
for (i = 0, j, least; i < size - 1; i++)
for (j = i + 1, least = i; j < size; j++)
if (a[j] < a[least])
swap(a[least], a[j]);
}
template<class T>
void Sort::bubblesort(T a[], int size)
{
for (i = 0; i < size - 1; i++)
for (j = size - 1; j > i; j--)
if (a[j] < a[j - 1])
swap(a[j], a[j - 1]);
}
template<class T>
void Sort::shellsort(T a[], int size)
{
for (int div = size / 2; div > 0; div /= 2)
{
for (int i = div; i < size; i++)
{
for (int j = i; j > 0 && a[j] < a[j - div]; j -= div)
swap(a[j], a[j - div]);
}
}
}
template<class T>
int main()
{
InputArray(T a[], int size);
insertionsort(T a[], int size);
OutputArray(T a[], int size);
selection(T a[], int size);
OutputArray(T a[], int size);
bubblesort(T a[], int size);
OutputArray(T a[], int size);
shellsort(T a[], int size);
OutputArray(T a[], int size);
return 0;
}