编一个程序,用同一个函数名对n个数据进行从小到大排序

编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整形、单精度型、双精度型。用函数模板实现。

//VC++6.0下调试通过。希望能对你有用
#include <iostream>
using namespace std;

template <class T>
void sort(T* a, int n)
{
int t;
T temp;
for (int i=0; i<n-1; i++)
{
t=i;
for (int j=i+1; j<n; j++)
{
if (*(a+t)>*(a+j))
t=j;
}
temp=*(a+i);
*(a+i)=*(a+t);
*(a+t)=temp;
}
}

static float arr0[6]={2.0,65.0,9.0,78.0,88.0,-2.0};
static double arr1[6]={558.0,999.0,123.0,222.0,55.0,456.0};
static int arr2[6]={123,456,789,654,321,5};

void main()
{
cout<<"float exp."<<endl;
for (int i=0; i<6; i++)
{
cout<<arr0[i]<<" ";
}
cout<<endl;
sort(arr0, 6);
for (i=0; i<6; i++)
{
cout<<arr0[i]<<" ";
}
cout<<endl;

cout<<"double exp."<<endl;
for (i=0; i<6; i++)
{
cout<<arr1[i]<<" ";
}
cout<<endl;
sort(arr1, 6);
for (i=0; i<6; i++)
{
cout<<arr1[i]<<" ";
}
cout<<endl;

cout<<"int exp."<<endl;
for (i=0; i<6; i++)
{
cout<<arr2[i]<<" ";
}
cout<<endl;
sort(arr2, 6);
for (i=0; i<6; i++)
{
cout<<arr2[i]<<" ";
}
cout<<endl;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-15
//这个问题用函数模板应该能更方便的解决
//因为排序的算法是一致的,只是类型不同而已
//你不妨复制去试一试,我运行过了,没问题
//百度知道自动缩减空白,搞得注释紧贴着代码,有点乱,将就着看吧
#include
using namespace std;
template //声明函数模板
void sort(Type* cp);
int main()
{
int a[5]={1,9,0,23,-45};
float b[5]={2.4, 7.6, 5.5, 6.6, -2.3 };
long int c[5]={10100,-123567, 1198783,-165654, 3456};

sort(a);
sort(b);
sort(c);cin.get();
return 0;
}

template //函数模板定义
void sort(Type* cp)//当调用sort(a)时,Type=int,cp就是int*,指向int的指针
{ //a 是int数组名,也是指向int的指针
int i,j; //所以参数匹配
Type temp;
for(i=0;i<4;i++) //这是经典的冒泡排序算法,很清晰
{
for(j=0;j<4;j++) //内循环中,每次循环,大的数将会向后移一个位置
{ //小的数将会向前移一个位置
if(cp[j]>cp[j+1])//当有n个数的时候,循环n-1次(这里5个数,循环4次)
{temp=cp[j]; //可以确保将每个数都比较一次
cp[j]=cp[j+1];
cp[j+1]=temp;} //外循环也为n-1次,确保每个数都可以移动n-1次
} //外循环进行n-1次,小的数字将一点一点向前移动
//同时大的数字也向后移动,
} //这将确保在外循环进行n-1次之后,每个数字都到自己指定的位置
for(i=0;i<5;i++)
cout<<cp[i]<<" ";
cout<<endl;
}

c++谭浩强第二版课后题答案
17.编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型。用重载函数实现。 【解】 可以编写出以下两个程序:(1)建立3个函数,分别用于处理整型、单精度型、双精度型数据的排序,在3个函数中都采用选择法排序方法。#include <iostream>#include <string>using namespace ...

编一个程序,用同一个函数名对n个数据进行从小到大排序
static float arr0[6]={2.0,65.0,9.0,78.0,88.0,-2.0};static double arr1[6]={558.0,999.0,123.0,222.0,55.0,456.0};static int arr2[6]={123,456,789,654,321,5};void main(){ cout<<"float exp."<<endl;for (int i=0; i<6; i++){ cout<<arr0[i]<<"...

用C++编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可 ...
void sort(double *a, int n) { qsort(a, n, sizeof(double), compD);} int main() { int intArr[5] = {5, 6, 4, 3, 7};float floatArr[5] = {4.3f, 6.8f, 3.2f, 9.6f, 10.3f};double doubleArr[5] = {1.1, 3.4, 5.4, 3.2, 9.3};sort(intArr, 5);...

编写一个程序,并用函数调用的方法,用数组名作为形式参数和实在参数,实 ...
using namespace std;void sort(int a[],int n);\/\/添加函数声明 int main(){ int b[5]={1,9,3,4,5};sort(b,5);return 0;} void sort(int a[],int n){ int i,j;int t;for (j=0;j<n;j++)for (i=0;i<n;i++)if (a[i]>a[i+1]){ t=a[i];a[i]=a[i+1]...

\/\/用c++将N个数从小到大排列输出,数据类型可以是整型,单精度型,双精度...
paixu(a,n); \/\/调用排序函数 system("pause");} 其实最简单的解决方法是用sort函数,只需#include<algorithm>就可以了,默认升序排序。sort(数组首地址即数组名,首地址+数组长度,排序方式)如果不写最后的参数则默认升序排列,以上面的程序为例,可以这样写:sort(a,a+n); \/\/前面不要忘...

...姓名,采用选择排序法对这n个姓名进行从小到大排序,并输出排序后的姓...
C编了一个程序 include<stdio.h> include<string.h> fun(char s[][80],int n){int i,j;char a[80];for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(s[i],s[j])>0){strcpy(a,s[i]);strcpy(s[i],s[j]);strcpy(s[j],a);} for(i=0;i<n;i++)printf("%s...

...n(<=10)个人名,存入一个数组name中,以从小到大的顺序输出,怎么做...
if(scanf("%d",&n)==1 && n>0 && n<11){\/\/输入n,有错提示并退出 for(i=0;i<n;scanf("%24s",p[i]=name[i++]));\/\/输入n个人名 putchar('\\n');for(i=0;i<n;i++){\/\/人名排序 for(k=i,t=k+1;t<n;t++)if(mystrcmp(p[k],p[t])>0)k=t;if(k!=i)q=p[...

用C语言编写一程序,统计N个学生的成绩信息。
printf("\\n根据总分情况排名如下:\\n");for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(a[i].mc==j+1){ printf("第%d:\\n",i+1);printf("名字:%s 学号:%d\\n",a[j].name,a[j].number);printf("数学:%lf 英语:%lf 计算机:%lf\\n",a[j].math,a[j].English,a...

...的调用编程:输入n个学生的m门成绩,并按总分由高到低将名字排序
第一步:抽象出算法数据结构。首先学生总数是n,而每个学生拥有m个成绩,即对应一个n中的i,有m个数据与之对应。因此可以得到结论,采用二维数组来储存n个学生m门成绩。按照总分排序,即将每个i对应的m门成绩加起来进行排序即可。第二步:具体算法(c语言伪代码)include <stdio.h> include <stdlib.h...

在c语言编程中如何将1-10的数从小到大排列。
冒泡法!在我们写程序的时候,通常都会对一组数据进行排序,常用的方法有冒泡法和选择法,我主要写下我对冒泡法的理解和心得。冒泡法:顾名思义,就是把小的数据向前排,也就是向上浮起,并因此进行排序。例:include "stdio.h" 包含头文件 void main() 主函数 { int a[10],t,i,j; 定义要...

相似回答