函数重载:
函数名相同,参数列表(特征标)不同
#include <iostream>
using namespace std;
void sort(int[], int len);//排序
void sort(float[], int len);
void sort(double[], int len);
void show(int[], int len);//输出
void show(float[], int len);
void show(double[], int len);
void sort(int nums[], int len)
{
int temp;
for(int i = 0; i < len - 1; i++)
{
for(int j = 0; j < len - i - 1;j++)
{
if(nums[j] > nums[j+1])
{
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
}
void sort(float nums[], int len)
{
float temp;
for(int i = 0; i < len - 1; i++)
{
for(int j = 0; j < len - i - 1;j++)
{
if(nums[j] > nums[j+1])
{
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
}
void sort(double nums[], int len)
{
double temp;
for(int i = 0; i < len - 1; i++)
{
for(int j = 0; j < len - i - 1;j++)
{
if(nums[j] > nums[j+1])
{
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
}
void show(int nums[], int len)
{
for(int i = 0; i < len; i++)
{
cout << nums[i] <<" ";
}
cout << endl;
}
void show(float nums[], int len)
{
for(int i = 0; i < len; i++)
{
cout << nums[i] <<" ";
}
cout << endl;
}
void show(double nums[], int len)
{
for(int i = 0; i < len; i++)
{
cout << nums[i] <<" ";
}
cout << endl;
}
int main()
{
int iNums[] = {56, 54, 12, 89, 43};
float fNums[] = {78.0f, 5.7f, 42.8f, 99.1f};
double dNums[] = {78.9, 23.6, 77.8, 98.5, 33.3};
cout << "排序前:";
show(iNums, sizeof(iNums) / sizeof(iNums[0]));
cout << "排序后:";
sort(iNums, sizeof(iNums) / sizeof(iNums[0]));
show(iNums, sizeof(iNums) / sizeof(iNums[0]));
cout << "排序前:";
show(fNums, sizeof(fNums) / sizeof(fNums[0]));
cout << "排序后:";
sort(fNums, sizeof(fNums) / sizeof(fNums[0]));
show(fNums, sizeof(fNums) / sizeof(fNums[0]));
cout << "排序前:";
show(dNums, sizeof(dNums) / sizeof(dNums[0]));
cout << "排序后:";
sort(dNums, sizeof(dNums) / sizeof(dNums[0]));
show(dNums, sizeof(dNums) / sizeof(dNums[0]));
return 0;
}
运行结果:
排序前:56 54 12 89 43
排序后:12 43 54 56 89
排序前:78 5.7 42.8 99.1
排序后:5.7 42.8 78 99.1
排序前:78.9 23.6 77.8 98.5 33.3
排序后:23.6 33.3 77.8 78.9 98.5
函数模板:
建立一个通用函数
#include <iostream>
using namespace std;
//函数声明
//template<typename T> void Swap(T&, T&);
//template<typename T>//模板头
//void Swap(T&, T&)
//{
// T temp = a;
// a = b;
// b = temp;
//}
//书写函数模板
template<typename T>
void sort(T tArray[], int len)
{
T temp;
for(int i = 0; i < len - 1; i++)
{
for(int j = 0; j < len - i - 1;j++)
{
if(tArray[j] > tArray[j+1])
{
temp = tArray[j];
tArray[j] = tArray[j+1];
tArray[j+1] = temp;
}
}
}
}
template<typename T>
void show(T tArray[], int len)
{
for(int i = 0; i < len; i++)
{
cout << tArray[i] <<" ";
}
cout << endl;
}
int main()
{
int iNums[] = {56, 54, 12, 89, 43};
float fNums[] = {78.0f, 5.7f, 42.8f, 99.1f};
double dNums[] = {78.9, 23.6, 77.8, 98.5, 33.3};
cout << "排序前:";
show(iNums, sizeof(iNums) / sizeof(iNums[0]));
cout << "排序后:";
sort(iNums, sizeof(iNums) / sizeof(iNums[0]));
show(iNums, sizeof(iNums) / sizeof(iNums[0]));
cout << "排序前:";
show(fNums, sizeof(fNums) / sizeof(fNums[0]));
cout << "排序后:";
sort(fNums, sizeof(fNums) / sizeof(fNums[0]));
show(fNums, sizeof(fNums) / sizeof(fNums[0]));
cout << "排序前:";
show(dNums, sizeof(dNums) / sizeof(dNums[0]));
cout << "排序后:";
sort(dNums, sizeof(dNums) / sizeof(dNums[0]));
show(dNums, sizeof(dNums) / sizeof(dNums[0]));
return 0;
}
运行结果:
排序前:56 54 12 89 43
排序后:12 43 54 56 89
排序前:78 5.7 42.8 99.1
排序后:5.7 42.8 78 99.1
排序前:78.9 23.6 77.8 98.5 33.3
排序后:23.6 33.3 77.8 78.9 98.5