上次算法问题回答不上来后,很受打击,于是决定重新学习算法,本人不是计算机专业,但是还要把算法给啃起来,这两天慢慢的在看一些算法,也会将练习的一些程序发出来,平时都是在linux下写代码,现在用vs2010上练习。附上代码:其它不表。在最下面有工程打包文件。添加冒泡法模板时编译报错,也请各路大神给予指点。报错信息为:
>d:\c++workspace\算法学习\算法学习\bubbsort.h(52): error C2904: “CBubbSortTestL”: 名称已经用于当前范围内的模板
1> d:\c++workspace\算法学习\算法学习\bubbsort.h(14) : 参见“CBubbSortTestL”的声明
1>d:\c++workspace\算法学习\算法学习\main.cpp(41): error C2146: 语法错误: 缺少“;”(在标识符“cBubbSort”的前面)
1>d:\c++workspace\算法学习\算法学习\main.cpp(41): warning C4551: 缺少参数列表的函数调用
1>d:\c++workspace\算法学习\算法学习\main.cpp(41): error C2065: “cBubbSort”: 未声明的标识符
1>d:\c++workspace\算法学习\算法学习\main.cpp(42): error C2065: “cBubbSort”: 未声明的标识符
1>d:\c++workspace\算法学习\算法学习\main.cpp(42): error C2228: “.BubbSort”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>
冒泡排序算法模板为:
#ifndef __BUBBSORT_H__
#define __BUBBSORT_H__
/*
*
*
*冒泡排序算法
*
*
*
*/
template <typename T>
class CBubbSortTestL
{
public:
CBubbSortTestL(){};
~CBubbSortTestL(){};
public:
void Swap(T *p1,T *p2);
// 0是升序 1是降序
int BubbSort(T Array[],int iSize);
};
template<class T>
void CBubbSortTestL<T>::Swap(T *p1,T *p2)
{
T tTmp;
tTmp = *p1;
*p1 = *p2;
*p2 = tTmp;
};
template<class T>
int CBubbSortTestL<T>::BubbSort(T Array[],int iSize)
{
/*if(0 != iSortType && 1 != iSortType)
{
return -1;
}
*/
int i = 0,j=0;
for ( i = iSize-1;i>1;i--)
{
for(j=0;j<i;j++)
{
if(Array[j]<Array[j+1])
{
Swap(&Array[j],&Array[j+1]);
}
}
}
return 0;
};
#endif
直接插入排序模板为:
#ifndef __DIRECT_INSERT_SORT_H__
#define __DIRECT_INSERT_SORT_H__
/*
*
*
*直接插入排序
*
*
*
*/
template <class T>
class CDirectInsertSort
{
public:
CDirectInsertSort(){};
~CDirectInsertSort(){};
public:
void Swap(T *p1,T *p2);
// 0是升序 1是降序
int DirectInsertSort(T Array[],int iSize,int iSortType=0);
};
template<class T>
void CDirectInsertSort<T>::Swap(T *p1,T *p2)
{
T tTmp;
tTmp = *p1;
*p1 = *p2;
*p2 = tTmp;
}
template<class T>
int CDirectInsertSort<T>::DirectInsertSort(T Array[],int iSize,int iSortType)
{
if(0 != iSortType && 1 != iSortType)
{
return -1;
}
if(0 ==iSortType)
{
for(int i = 0;i<iSize-1;i++)
{
for(int j=i+1;j>=1;j--)
{
if(Array[j]<=Array[j-1])
{
Swap(&Array[j],&Array[j-1]);
}
}
}
}
else if(1 == iSortType)
{
for(int i = 0;i<iSize;i++)
{
for(int j=i+1;j>=1;j--)
{
if(Array[j]>=Array[j-1])
{
Swap(&Array[j],&Array[j-1]);
}
}
}
}
return 0;
}
#endif
运行截图1:
不知道怎么上传附件,有知道的请指点。谢谢