怎么用函数重载和模板两种方法 来进行N个数据(包括单精度,双精度,整形)从小到大排序?

如题所述

代码如下:如果有什么不清楚地,可另行探讨。
#include<iostream.h>
void PopSort(int array[],int n);//函数声明
void PopSort(float array[],int n);
void PopSort(double array[],int n);

template<class T>
void PopSort(T array[],int n,int flag);//模板函数定义
template<class T>
void print(T array[],int n);
void main()
{
//测试函数
//int array[10]={23,32,12,11,31,90,100,55,26,22};
float array1[10]={23.1f,32.22f,11.2f,11.0f,31.5f,90.2f,88.90f,55.33f,26.5f,22.0f};
double array[10]={23,32.001,12,11,32.2,90,100,55,26,22};
cout<<"函数重载实现排序\nfloat:"<<endl;
PopSort(array1,10);//自动调用PopSort(float array[],int n)
print(array,10);//自动调用PopSort(double array[],int n)
cout<<"double:"<<endl;
PopSort(array,10);
//模板函数调用
print(array,10);

cout<<"模板函数实现排序"<<endl;
PopSort(array,10,1);
print(array,10);

}
/*****************************************************
* 函数重载
*****************************************************/

void PopSort(int array[],int n)
{
int i,j;
int temp;//中间变量
for(i=0;i<n;i++)//for(i=1;i<n-1;i++)
{
for(j=0;j<n-i;j++)
{
if(array[j]>array[j+1])
{
//数据交换
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
void PopSort(float array[],int n)
{
int i,j;
float temp=0;//中间变量
for(i=0;i<n;i++)//for(i=1;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(array[j]>array[j+1])
{
//数据交换
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
void PopSort(double array[],int n)
{
int i,j;
double temp=0;//中间变量
for(i=0;i<n;i++)//for(i=1;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(array[j]>array[j+1])
{
//数据交换
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
/****************************************************
* 模板应用
*****************************************************/
template<class T>
void PopSort(T array[],int n,int flag)
{
int i,j;
T temp;//中间变量
for(i=0;i<n;i++)//for(i=1;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(array[j]>array[j+1])
{
//数据交换
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
template<class T>
void print(T array[],int n)
{
for(int i=0;i<n;i++)
{
cout<<array[i]<<"\t";
if((i+1)%5==0)
{
cout<<endl;
}
}
}
温馨提示:答案为网友推荐,仅供参考