排序函数重载

题目内容:

编写一组重载的排序函数,可以对两个整数、三个整数、四个整数、整数数组从大到小排序,函数名为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;
}

时间: 2024-12-26 03:38:38

排序函数重载的相关文章

泛型编程与C++标准模板库 : 浅谈sort()排序函数

以前用sort排序的时候,只知道sort函数有如下两种重载方式. template< class RandomIt > void sort( RandomIt first, RandomIt last ); template< class RandomIt, class Compare > void sort( RandomIt first, RandomIt last, Compare comp ); 当时对这些参数也不是很懂,只知道一些简单的用法. 1).比如: 如下代码可以使

各种排序函数(摘)

sort的应用: 1.可以传入两个参数: sort(a,a+N) ,其中a是数组,a+N表示对a[0]至a[N-1]的N个数进行排序(默认从小到大排序): 2.传入三个参数: sort(a,a+N,cmp),第三个参数是一个函数 : 如果让函数从大到小排序,可以用如下算法实现: bool cmp(int a,int b){return a>b}; sort(A,A+N,cmp); 分排序函数函数:partial_sort: 例如,你现有一 个包含Widget对象(Widget意为“小挂件”)的v

sort在STL库中是排序函数

sort在STL库中是排序函数,有时冒泡.选择等O(N^2)算法会超时时,我们可以使用STL中的快速排序O(N log N)完成排序 sort在<algorithm>库里面,原型如下: 1 2 3 4 template <class RandomAccessIterator>  void sort ( RandomAccessIterator first, RandomAccessIterator last ); template <class RandomAccessIte

实验二:函数重载、模板、简单类的定义和实现

[实验结论] #函数重载 编写重载函数add(),实现对int型,double型,Complex型数据的加法.在main()函数中定义不同类型 数据,调用测试. #include<iostream> using namespace std; struct Complex { double real; double imaginary; }; //函数声明 int add(int a, int b); double add(double a,double b); Complex add(Comp

实验2:函数重载、函数模板、简单类的定义和实现

实验目的 1. 掌握c++中函数的声明.定义.调用和参数传递方式 2. 掌握c++中带有默认形参值的函数声明和定义方法 3. 理解函数重载,掌握c++中函数重载的实现方式 4. 理解函数模板,掌握c++中函数模板的简单使用 5. 理解面向对象的抽象和封装,掌握c++中类的定义.实现和使用方法 实验准备 1. 函数的声明.定义.调用.参数传递方法 2. 带有默认形参值的函数 3. 函数重载 4. 函数模板(9.1.1节 + 9.3节) 其中,9.3节,理解3个常用的排序算法和两个常用的查找算法 5

javascript 函数重载 overloading

函数重载 https://en.wikipedia.org/wiki/Function_overloading In some programming languages, function overloading or method overloading is the ability to create multiple methods of the same name with different implementations. Calls to an overloaded functi

day4 函数重载

函数的重载 1.函数重载的定义:在同一个类中,有一个以上的同名函数,只要函数的参数列表或参数类型不一样即可,与返回值无关, 这些统称为方法的重载. 2.函数的重载存在的原因:为了增强方法的阅读性,优化了程序设计. 案例1:九九乘法表 1 private static void print99() { 2 for(int i = 1 ; i<= 9 ; i ++){ 3 for(int j = 1 ; j<=i ; j++){ 4 System.out.print(i+"*"

c++中的函数重载

c++中的函数重载 什么是函数重载 重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数.类型或者顺序)必须不同,这组函数被称为重载函数. 函数重载的作用 重载函数常用来实现功能类似而所处理的数据类型不同的问题,能减少函数名的数量,提高程序的可读性. 重载函数的构成说明 定义一个类,添加一系列函数名相同的函数,但参数形式各有不同,测试一下能否构成重载. #include <iostream> using names

C++函数重载实现的原理以及为什么在C++中调用C语言编译的函数时要加上extern &quot;C&quot;声明

C++相对于C语言而言支持函数重载是其极大的一个特点,相信在使用C语言的时候大家如果要写一个实现两个整型数据相加的函数还要写一个浮点型数据相加的函数,那么这两个函数的名字绝对不可以一样,这样无疑在我们使用这个函数的时候增加了复杂性,但是在C++中我们却可以很好的解决这个问题,因为在C++中函数是支持重载的也就是说两个函数的函数名可以一样,这样并不会出现函数名重定义的问题,但是我们在使用的时候也要遵守一些规定,这些规定我们会在接下来的讨论中提到,下面我们就来分析在C++中函数是如何实现函数的重载的