• 近似排序


    题目链接:http://oj.tfls.net/p/86

    注意题目中数据范围,考虑数组存放和比较值为什么,三种简单排序都可以尝试

    方法一:普通冒泡排序

    #include<bits/stdc++.h>
    using namespace std;
    int a[105];
    int x, y;
    int fz(int n){//实现数字转换 
        int newn=0;
        while(n){
            newn=newn*10+n%10;
            n/=10;
        } 
        return newn;
    }
    int main()
    {
        cin>>x>>y;
        int n=0;//记录下标,统计数组个数 
        for(int i=x; i<=y; i++)a[++n]=i;//数组下标存储从1-n 
        for(int i=1; i<n; i++){//此处使用冒泡排序优化 ,也可以使用选择排序或者插入排序 
            bool f=1;//用于冒泡优化 
            for(int j=1; j<=n-1; j++)
                if(fz(a[j]) > fz(a[j+1])){//注意此处比较的是倒过来的数的大小 
                    swap(a[j], a[j+1]);
                    f=0;
                }
            if(f)break;    
        }
        for(int i=1; i<=n; i++)cout<<a[i]<<endl;
        return 0;
     } 

    方法二:结构体冒泡

    #include<bits/stdc++.h>
    using namespace std;
    int x, y;
    struct num{
        int oldn, newn;//结构体数组 
    };
    num a[105];
    int fz(int n){//实现数字转换 
        int newn=0;
        while(n){
            newn=newn*10+n%10;
            n/=10;
        } 
        return newn;
    }
    int main()
    {
        cin>>x>>y;
        int n=0;//记录下标,统计数组个数 
        for(int i=x; i<=y; i++){//数组下标存储从1-n 
            a[++n].oldn=i;
            a[n].newn=fz(i);
        }
        for(int i=1; i<n; i++){//此处使用冒泡排序优化 ,也可以使用选择排序或者插入排序 
            bool f=1;//用于冒泡优化 
            for(int j=1; j<=n-1; j++)
                if(a[j].newn > a[j+1].newn){//注意此处比较的是倒过来的数的大小 
                    num t;//结构体变量交换 
                    t.newn=a[j].newn;  t.oldn=a[j].oldn;
                    a[j].newn=a[j+1].newn;  a[j].oldn=a[j+1].oldn;
                    a[j+1].newn=t.newn; a[j+1].oldn=t.oldn;
                    f=0;
                }
            if(f)break;    
        }
        for(int i=1; i<=n; i++)cout<<a[i].oldn<<endl;
        return 0;
     } 
  • 相关阅读:
    Linux服务器基本信息查看
    Linxu下jenkins部署和基本配置
    Python常见序列详解
    Git 操作
    Python操作Mongodb
    sqlalchemy ORM模块使用介绍
    linux之sed的常用操作
    Python pandas学习笔记
    正则表达式——字符串匹配
    1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,6,...输入位置输出该位置上的数字,如输入10输出4,输入11输出5.
  • 原文地址:https://www.cnblogs.com/tflsnoi/p/16314380.html
Copyright © 2020-2023  润新知