排序

题目描述

对输入的n个数进行排序并输出。

输入描述:

输入的第一行包括一个整数n(1<=n<=100)。
接下来的一行包括n个整数。

输出描述:

可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格。
每组测试数据的结果占一行。

示例1

输入
4
1 4 3 2
输出
1 2 3 4

使用C++11,编写冒泡 排序

#include<stdio.h>
int main(){
    int n;//输入n个数,接收n
    int buf[100];//保存排序成功后的数字
    while(scanf("%d",&n)!=EOF){//n前面加上&
        for(int i = 0;i<n;i++){
            scanf("%d",&buf[i]);//接收输入的n个数
        }
        
        //现在进行排序
        //分析:输入的数字范围为(1~100)
        //那么使用冒泡排序的时间复杂度为O(100*100) < 百万级别
        //占用空间复杂度为:int-->32bit*100<--数组长度,的内存 < 限定内存空间大小32MB
        
        //所以冒泡排序符合要求,使用冒泡排序进行作答
        int temp = 0;//定义临时变量
        for(int i = 0;i<n;i++){//整个冒泡排序的方法是固定的,记下来
            for(int j = 0;j<n-i-1;j++){
                if (buf[j]>buf[j+1]){
                    temp = buf[j];
                    buf[j] = buf[j+1];
                    buf[j+1] = temp;
                }
            }
        }
        
        //排序完成,将排好序的数进行输出
        for(int i=0;i<n;i++){
            printf("%d ",buf[i]);//记得每个数后面加上空格
        }
        printf("\n");//打印完毕级的换行
        
        
        
    }
    
    return 0;
}

直接调用快速排序库函数

#include<stdio.h>
#include<algorithm>//C++已经编写好了快速排序库函数,只需要调用该函数
using namespace std;//必须写上

int main(){
    int n;//输入n个数,接收n
    int buf[100];//保存排序成功后的数字
    while(scanf("%d",&n)!=EOF){
        for(int i = 0;i<n;i++){
            scanf("%d",&buf[i]);//接收输入的n个数
        }
        
        
        sort(buf,buf+n);//(起始地址,结束地址)
        
        //排序完成,将排好序的数进行输出
        for(int i=0;i<n;i++){
            printf("%d ",buf[i]);//记得每个数后面加上空格
        }
        printf("\n");//打印完毕级的换行
    }
    
    return 0;
}

自定义排序规则

#include<stdio.h>
#include<algorithm>//C++已经编写好了快速排序库函数,只需要调用该函数
using namespace std;
bool cmp(int x,int y){//定义排序规则,当cmp返回true时,第一个参数会排列在第二个参数之前,即升序排列
    return x<y;
}

int main(){
    int n;//输入n个数,接收n
    int buf[100];//保存排序成功后的数字
    while(scanf("%d",&n)!=EOF){
        for(int i = 0;i<n;i++){
            scanf("%d",&buf[i]);//接收输入的n个数
        }
        
        
        sort(buf,buf+n,cmp);//(起始地址,结束地址),表明使用自定义的排列规则
        
        //排序完成,将排好序的数进行输出
        for(int i=0;i<n;i++){
            printf("%d ",buf[i]);//记得每个数后面加上空格
        }
        printf("\n");//打印完毕级的换行
    }
    
    return 0;
}

强烈建议使用sort进行排序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值