你的代码我运行过了 没有你说的那个错误,但你代码中有很多错误 几个排序都不能正确排出 下面是我给你改后的 在我机子上能运行 你在看看 不会的可以问我
#include
using namespace std;
const int maxsize = 10;
template
class search
{
private:
T *array;
public:
search();
search(T a[]);
~search();
void dubble_sort();
void insert_sort();
void binary_sort();
void sort_choice();
void display();
};
template
search
{
array = new T[maxsize];
}
template
search
{
array = new T[maxsize];
for(int i = 0; i < maxsize; i++)
{
array[i] = a[i];
}
}
template
search
{
delete []array;
}
template
void search
{
for(int i = 1; i < maxsize; i++)
{
for(int j = 0; j <= maxsize-i; j++)
if(array[j] > array[j+1])
{
T temp;
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
template
void search
{
for(int i = 0; i < maxsize; i++)
{
int k = i;
for(int j = i-1; j >= 0; j--)
{
if(array[k] < array[j] )
{
T temp;
temp = array[j];
array[j] = array[k];
array[k] = temp;
}
}
}
}
template
void search
{
for(int i = 0; i < maxsize; i++)
{ int k = i+1;
int left = 0,right = i,mid = (left+right)/2;
if(array[k] > array[mid])
{
left = mid;
mid = (left+right)/2;
}
else
{
right = mid;
mid = (left+right)/2;
}
T temp;
temp = array[mid];
array[mid] = array[k];
array[k] = temp;
}
}
template
void search
{
for(int i = 0; i < maxsize; i++)
{
cout << array[i] << "\t";
}
}
template
void search
{
cout << "****** 请选择你喜欢的排序方法(0~3): ******" << "\n";
cout << "0: -------- 冒泡排序 -------" << "\n"
<< "1 -------- 直接插入排序 ----- "<< "\n"
<< "2 -------- 折半插入 ------- " << "\n"
<< "3 -------- 退出选择 ------- " << "\n";
int a;
cin >> a;
switch(a)
{
case 0:
dubble_sort();
display();
break;
case 1:
insert_sort();
display();
break;
case 2:
binary_sort();
display();
break;
case 3:
exit(1);
break;
default :
cout << "不好意思,你的输入有误..." << endl;
}
}
#include
int main(int argc, char *argv[])
{
int a[maxsize];
cout << "请输入" << maxsize << "个整数:"<< endl;
for(int i = 0; i < maxsize; i++)
cin >> a[i];
search
my_search.sort_choice();
system("PAUSE");
return EXIT_SUCCESS;
}
[1] 类模板定义的时候要把类函数的实现部分和定义部分都放在 .h文件里面, 不能放在 .cpp里面,
[2] 如果非要放cpp里面, 那么就要在main.cpp里 加入以下两个, 缺一不可.
#include "search.h"
#include "search.cpp"
模板类外定义成员函数没有问题。不过其它地方倒是有些错误,比如,数据成员array为数组,构造函数中的
array = new T[maxsize];
析构函数中的
delete[] array;
还有,成员函数sort_choice()中的一些小错误。