排序函数重载

题目内容:

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


时间限制:500ms内存限制:32000kb
#include<iostream>
#include<string>
using namespace std;
int sort(int &a,int &b)//引用传递
{
	int tmp;
	if(a<b)
	{
		tmp=a;
		a=b;
		b=tmp;
	}
}
int sort(int &a,int &b,int &c)
{
	sort(a,b);
	sort(a,c);
	sort(b,c);
}
int sort(int &a,int &b,int &c,int &d)
{
	sort(a,b,c);
	sort(b,c,d);
	sort(a,b,c);
}
int sort(int data[],int n)
{
	int i,j;
	for(i=0;i<n-1;i++)
		for(j=0;j<n-1;j++)
		{
			sort(data[j],data[j+1]);
		}
}
void print(int data[],int n)
{  
    for (int i=0;i<n;i++)  
    {  
        cout<<data[i];  
        if (i!=n-1)  
        {  
            cout<<" ";  
        }  
    }  
}  
int main()
{
int a,b,c,d;
int data[100],da[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函数中传入自定义类型的比较函数。 另一种方法是使用仿函数,也就是重载函数调用操作符()的类。这个类可以接受两个自定义类型的参数,并根据自定义的比较规则返回比较结果。比如,可以创建一个名为StudentComparator的仿函数类来实现根据学生成绩排序的比较规则。然后在sort函数中传入这个仿函数类的实例作为比较函数。 使用仿函数的好处是可以更灵活地定义排序规则,可以根据不同的排序需求创建不同的仿函数类。同时,使用仿函数还可以方便地将排序规则封装起来,使代码更加清晰易读。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [sort对类对象进行自定义排序/重载操作符/友元函数/仿函数](https://blog.csdn.net/qq_43791377/article/details/105552632)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [C++ sort排序之降序、升序使用总结](https://download.csdn.net/download/weixin_38640473/14839215)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值