//计算N!的递归
int Factorial(){
if(n<=1) return 1;
else return n*Factorial(n-1);
}
//累加a[0:n-1]
template<class T>
T sum(T a[],int n){
T tsum =0;
for(int i=0;i<n;i++){
tsum += a[i];
}
return tsum;
}
//递归计算a[0:n-1]
template<class T>
T Rsum(T a[],int n){
if(n>0)
return Rsum(a,n-1) +a[n-1];
return 0;
}
//使用递归生成排列,这段代码输出所有前缀为list[0:k-1],后缀为list[k:m]的排列方式
template<class T>
void Perm(T list[],int k,int m){
int i;
if(k==m){
for{i=0;i<=m;i++}
cout<<list[i];
cout<<endl;
}
else
for(i=k;i<=m;i++){
Swap(list[k],list[i]);
Perm(list,k+1,m);
Swap(list[k],list[i]);
}
}
template<class T>
inline void Swap(T& a, T& b){
T temp =a;
a =b;
b =temp;
}
//创建一个二维数组但不处理异常
template<class T>
void Make2DArray(T** &x ,int rows,int cols){
x = new T* [rows];
for(int i=0;i < rows; i++)
x[i]=new int [cols];
}
//寻找最大元素
template<class T>
int Max(T a[],int n){
int pos=0;
for(int i=1;i<n,i++){
if(a[pos]<a[i])
pos=i;
}
return pos;
}
//选择排序
template<class T>
void SelectionSort(T a[],int n){
for(int size=n;size>1;size--){
int j=Max(a,size);
Swap(a[j],a[size-1]);
}
}
//及时终止的选择排序
template<class T>
void SelectionSort(T a[],int n){
bool sorted = false;
for(int size=n;!sort && size>1;size--){
int pos=0;
for(int i=1;i<n,i++){
if(a[pos]<a[i])
pos=i;
else sorted = true;
}
Swap(a[j],a[size-1]);
}
}
//顺序搜索
template<class T>
int SequentialSearch(T a[],const T& x,int n){
int i=0;
for(i=0;i<n && i!=x;i++);
if(i==n) return -1;
return i;
}
//一次冒泡
template<class T>
void Bubble(T a[],int n){
for(int i=0;i<n-1;i++)
if(a[i]>a[i+1])
Swap(a[i],a[i+1]);
}
//冒泡排序
template<class T>
void BubbleSort(T a[],int n){
for(int i=n;n>1;i--)
Bubble(a,i);
}
void BubbleSort(int* pData, int count)
{
int temp;
for (int i = 1; i < count; i++)
{
for (int j = count - 1; j >= i; j--)
{
if (pData[j] < pData[j - 1])
{
temp = pData[j - 1];
pData[j - 1] = pData[j];
pData[j] = temp;
}
}
}
}
//及时终止的冒泡排序
template<class T>
bool Bubble(T a[],int n){
bool swaped = false;
for(int i=0;i<n-1;i++)
if(a[i]>a[i+1]){
Swap(a[i],a[i+1]);
swaped = true;
}
return swaped;
}
template<class T>
void BubbleSort(T a[],int n){
for(int i=n;n>1 && Bubble(a,i);i--)
}
//向一个有序数组a中插入元素x
template<class T>
void Insert(T a[],int& n,const T& x){
int i;
for(i=n-1; i>=0&& x<a[i];i--)
a[i+1]=a[i];
a[i+1]=x;
n++;
}
//插入排序
template<class T>
void Insert(T a[],int& n,const T& x){
int i;
for(i=n-1; i>=0&& x<a[i];i--)
a[i+1]=a[i];
a[i+1]=x;
}
template<class T>
void InsertSort(T a[],int n,){
for(i=1; i<n;i++){
T t=a[i];
Insert(a,i,t);
}
}
//另一种插入排序
template<class T>
void Insert(T a[],int& n,const T& x){
}
template<class T>
void InsertSort(T a[],int n,){
for(i=1; i<n;i++){
T t=a[i];
int j;
for(j=n-1; j>=0&& x<a[j];j--)
a[j+1]=a[j];
a[j+1]=x;
}
}
数据结构算法 (一)
最新推荐文章于 2018-04-01 13:34:37 发布