//用c++将N个数从小到大排列输出,数据类型可以是整型,单精度型,双精度型, #include <iostream> using

求解答

这个建议使用函数模版来做,例如:
#include<iostream>
using namespace std;
template<typename T> //T可以用其他字母代替
T paixu(T*a,int n) //排序函数需要两个参数,数组的首地址和元素个数
{
for(int i=0;i<n;i++){ //冒泡排序,升序
for(int j=0;j<n;j++){
if(a[i]<a[j]){
T temp=a[i];
a[i]=a[j];
a[j]=temp;}}}
for(int i=0;i<n;i++) cout<<a[i]<<endl; //输出排序后的结果
}
int main()
{
int a[5],n; //为了方便测试中就用int了
n=sizeof(a)/sizeof(int); //考虑到实际n的值可能需要计算得出
for(int i=0;i<n;i++) cin>>a[i]; //输入数组中的元素
paixu(a,n); //调用排序函数
system("pause");
}
其实最简单的解决方法是用sort函数,只需#include<algorithm>就可以了,默认升序排序。
sort(数组首地址即数组名,首地址+数组长度,排序方式)
如果不写最后的参数则默认升序排列,以上面的程序为例,可以这样写:
sort(a,a+n); //前面不要忘记头文件
这个方法很简单的
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-03-28
//利用函数模板来实现,把这段加进去,调用时用数组名和长度,这样就可以完成排序功能
//函数模板会根据调用的数据类型,来实例化这个函数。
template <class T>
T sort(T *a,int n)
{
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(a[i]>a[j])
swap(a[i],a[j]);
}追问

不同数据类型的n值可以不一样例如整型3个比较单精度可以4个比较如果用模板3个整型就只能3个单精度了用重载咋做啊

本回答被网友采纳
相似回答