【中等】查字典排序

描述

给定一任意字典序(长度为n)与字符串,对此字符串(长度为k)应用字典序进行升序排序.
如果不在字典序中的字符,则使用ASCII值最为字典序.
0 < n < m
0 < k < 256
m 一般是256,大小为 128 << sizeof(char),根据平台而异.

例如有字典序1 6 5 4 3 2 0 c b w
那么对应的优先级 1 2 3 4 5 6 7 8 9 10
未出现的字典序 a b c d
那么对应优先级 97 98 99 100
优先级越小字符越靠前(左)

输入描述

第一行输入n,k
第二行输入字典序
第三行输入字符串

输出描述

输出排序后的字符串

用例输入 1

9 12
9 5 1 3 7 4 2 6 8
85462afegw01

用例输出 1

5142680aefgw

#include<stdio.h>


int main(){
    int n,k,num=0,t;
    scanf("%d %d\n",&n,&k);
    char a[n],b[k];//字典 和 要排序的字母数字
    for(int i=0;i<n;i++){
        scanf("%c ",&a[i]);
    }//获得字典
    for(int i=0;i<k;i++){
        scanf("%c",&b[i]);
    }//获得乱序字母数字
    for(int i=0;i<n;i++){
        for(int j=0;j<k;j++){
            if(a[i]==b[j]){//查找乱序中是否出现字典中的 是,则将其利用冒泡放到前面
                for(int m=j;m>num;m--){
                    t=b[m];
                    b[m]=b[m-1];
                    b[m-1]=t;
                }
                num++;//记录已经有序了多少位
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值