练习16,L题,排序函数重载

题目如下:

用同一个函数名对n(n<=10)个数据进行从小到大排序,数据类型可以是整数、浮点数,用函数重载实现

输入描述:

共3行,第一行输入一个整数n,第二行输入n个整数,空格分隔,第三行输入n个浮点数,空格分隔。

输出描述:

共两行,第一行,输出n个整数的升序排列,以空格间隔,并以空格结尾,第二行,输出n个浮点数的升序排列,以空格间隔,并以空格结尾

解决该问题,冒泡排序或者选择排序或者是插入排序一定要熟记,把这个函数放在void函数里,由于此题需要用函数重载,就得需要同一函数名,两个不同的函数,分别为int类型和double类型,代码如下:

void flag(int a[],int n)
{
  for(int i = 0;i < n;i++)
  {
	for(int j = 0;j < n-1-i;j++)
	{
	  if(a[j] > a[j+1])
	  {
		int b = a[j];
		a[j] = a[j+1];
		a[j+1] = b;
	  }
	}
  }
}
void flag(double a[],int n)
{
  for(int i = 0;i < n;i++)
  {
	for(int j = 0;j < n-1-i;j++)
	{
	  if(a[j] > a[j+1])
	  {
		double b = a[j];
		a[j] = a[j+1];
		a[j+1] = b;
	  }
	}
  }
}

注意的是,第二个重载函数交换时的b变量一定要用double,否则后面输出的是整数类型

主函数比较简单,代码如下:

int main()
{
    int n;
    cin >> n;
    int *a = new int[n];
    double *b = new double[n];
    for(int i = 0;i < n;i++)
    {
        cin >> a[i];
    }
    for(int i = 0;i < n;i++)
    {
        cin >> b[i];
    }
    flag(a,n);
    flag(b,n);
    for(int i = 0;i < n;i++)
    {
        cout << a[i] << " ";
    }
    cout << endl;
    for(int i = 0;i < n;i++)
    {
        cout << b[i] << " ";
    }
    delete[] a;
    delete[] b;
    return 0;
}

总代码:

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
void flag(int a[],int n)
{
    for(int i = 0;i < n-1;i++)
    {
        for(int j = 0;j < n-i-1;j++)
        {
            if(a[j] > a[j+1])
            {
                int b = a[j];
                a[j] = a[j+1];
                a[j+1] = b;
            }
        }
    }
}
void flag(double a[],int n)
{
    for(int i = 0;i < n-1;i++)
    {
        for(int j = 0;j < n-i-1;j++)
        {
            if(a[j] > a[j+1])
            {
                double b = a[j];
                a[j] = a[j+1];
                a[j+1] = b;
            }
        }
    }
}
int main()
{
    int n;
    cin >> n;
    int *a = new int[n];
    double *b = new double[n];
    for(int i = 0;i < n;i++)
    {
        cin >> a[i];
    }
    for(int i = 0;i < n;i++)
    {
        cin >> b[i];
    }
    flag(a,n);
    flag(b,n);
    for(int i = 0;i < n;i++)
    {
        cout << a[i] << " ";
    }
    cout << endl;
    for(int i = 0;i < n;i++)
    {
        cout << b[i] << " ";
    }
    delete[] a;
    delete[] b;
    return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务