排序函数重载
2016-04-18 02:45
204 查看
题目内容:
编写一组重载的排序函数,可以对两个整数、三个整数、四个整数、整数数组从大到小排序,函数名为sort,其中数组排序应使用递归的方法,另补充print函数,在一行显示排序后的数组元素。
主函数如下:
int main()
{
int a,b,c,d;
int data[100];
int k,n,i;
cin>>k;
switch(k)
{
case 1:
cin>>a>>b;
sort(a,b);
cout<<a<<" "<<b<<endl;
break;
case 2:
cin>>a>>b>>c;
sort(a,b,c);
cout<<a<<" "<<b<<" "<<c<<endl;
break;
case 3:
cin>>a>>b>>c>>d;
sort(a,b,c,d);
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
break;
case 4:
cin>>n;
for(i=0;i<n;i++)
{
cin>>data[i];
}
sort(data,n);
print(data,n);
break;
}
return 0;
}
输入格式:
请根据主程序自己分析。
输出格式:
排序后的数据,一行,从大到小,末尾没有空格。
输入样例:
4
10
22 15 20 16 3 27 14 64 108 10
输出样例:
108 64 27 22 20 16 15 14 10 3
请提交完整程序,包括给出的main()
#include<iostream>
#include <cstring>
using namespace std;
void sort(int &a,int &b)
{
if(a>b)
{
int tmp=a;
a=b;
b=tmp;
}
}
void sort(int &a,int &b,int &c)
{
sort(a,b);
sort(a,c);
sort(b,c);
}
void sort(int &a,int &b,int &c,int &d)
{
sort(a,b,c);
sort(a,d);
sort(b,c,d);
}
void sort(int a[],int n)
{
for(int i=0;i<n-1;i++)
for(int j=0;j<n-1-i;j++)
sort(a[j],a[j+1]);
}
void print(int a[],int n)
{
for(int i=0;i<n;i++)
{
if(i==0)
cout<<a[i];
else
cout<<" "<<a[i];
}
}
int main()
{
int a,b,c,d;
int data[100];
int k,n,i;
cin>>k;
switch(k)
{
case 1:
cin>>a>>b;
sort(a,b);
cout<<a<<" "<<b<<endl;
break;
case 2:
cin>>a>>b>>c;
sort(a,b,c);
cout<<a<<" "<<b<<" "<<c<<endl;
break;
case 3:
cin>>a>>b>>c>>d;
sort(a,b,c,d);
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
break;
case 4:
cin>>n;
for(i=0;i<n;i++)
{
cin>>data[i];
}
sort(data,n);
print(data,n);
break;
}
return 0;
}
编写一组重载的排序函数,可以对两个整数、三个整数、四个整数、整数数组从大到小排序,函数名为sort,其中数组排序应使用递归的方法,另补充print函数,在一行显示排序后的数组元素。
主函数如下:
int main()
{
int a,b,c,d;
int data[100];
int k,n,i;
cin>>k;
switch(k)
{
case 1:
cin>>a>>b;
sort(a,b);
cout<<a<<" "<<b<<endl;
break;
case 2:
cin>>a>>b>>c;
sort(a,b,c);
cout<<a<<" "<<b<<" "<<c<<endl;
break;
case 3:
cin>>a>>b>>c>>d;
sort(a,b,c,d);
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
break;
case 4:
cin>>n;
for(i=0;i<n;i++)
{
cin>>data[i];
}
sort(data,n);
print(data,n);
break;
}
return 0;
}
输入格式:
请根据主程序自己分析。
输出格式:
排序后的数据,一行,从大到小,末尾没有空格。
输入样例:
4
10
22 15 20 16 3 27 14 64 108 10
输出样例:
108 64 27 22 20 16 15 14 10 3
请提交完整程序,包括给出的main()
程序代码:*
#include<iostream>
#include <cstring>
using namespace std;
void sort(int &a,int &b)
{
if(a>b)
{
int tmp=a;
a=b;
b=tmp;
}
}
void sort(int &a,int &b,int &c)
{
sort(a,b);
sort(a,c);
sort(b,c);
}
void sort(int &a,int &b,int &c,int &d)
{
sort(a,b,c);
sort(a,d);
sort(b,c,d);
}
void sort(int a[],int n)
{
for(int i=0;i<n-1;i++)
for(int j=0;j<n-1-i;j++)
sort(a[j],a[j+1]);
}
void print(int a[],int n)
{
for(int i=0;i<n;i++)
{
if(i==0)
cout<<a[i];
else
cout<<" "<<a[i];
}
}
int main()
{
int a,b,c,d;
int data[100];
int k,n,i;
cin>>k;
switch(k)
{
case 1:
cin>>a>>b;
sort(a,b);
cout<<a<<" "<<b<<endl;
break;
case 2:
cin>>a>>b>>c;
sort(a,b,c);
cout<<a<<" "<<b<<" "<<c<<endl;
break;
case 3:
cin>>a>>b>>c>>d;
sort(a,b,c,d);
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
break;
case 4:
cin>>n;
for(i=0;i<n;i++)
{
cin>>data[i];
}
sort(data,n);
print(data,n);
break;
}
return 0;
}
相关文章推荐
- tns load balance及master/slave使用模式和灰度发布
- [Angular 2] Router basic and Router Params
- 创建动态数据窗口的两种方法
- windows界面编程之自绘窗体(模仿腾讯qq)
- 114. Flatten Binary Tree to Linked List
- windows内核编程之如何防止一个相同的程序重复运行
- 第7章 Iptables与Firewalld防火墙。
- windows界面编程之自绘菜单
- Hibernate学习实例:关联表的树状结构设计
- MFC 窗口重绘问题
- 如何将内存中的位图数据绘制在DC上
- c/c++实现浏览器的下载功能
- ubuntu14.04+svn
- Flash builder4.7更新AIR SDK
- 技术回归01-Windows内存分配工具
- apache ant 揭开神秘面纱
- [转]ubuntu中查找软件的安装位置
- 【Leetcode】6.ZigZag Conversion 解题
- PHP基础算法
- 修改Shp文件名称